API Design Myth: Exceptions are for "Exceptional Errors"

I was updating FDG section on exceptions. I added one anntation that I thought I would post here as well:   KRZYSZTOF CWALINA One of the biggest misconceptions about exceptions is that they are for “exceptional conditions.” The reality is that they are for communicating error conditions. From a framework design perspective, there is no…


Nullable<T> Usage Guidelines

  These guidelines were just added as part of an update to the Framework Design Guidelines book (upcomming 2nd edition). Hope you find them useful.   Nullable<T> is a simple type added to the .NET Framework 2.0. The type was designed to be able to represent Value Types with “null” values. Nullable<int> x = null;…


Framework Design Guidelines Digest v2

Almost 4 years ago, I blogged about Framework Design Guidelines Digest. At that time, my blog engine did not support attaching files and I did not have a convenient online storage to put the document on, and so I asked people to email me if they want an offline copy. Believe it or not, I…


Framework Design Studio Released

When I was coming back from Mix 2007, I was bored on the plane and so started to write a dev tool. What a geeky thing to do on a plane. 🙂 The tool allows comparing two versions of an assembly to identify API differences: API additions and removals. Comparing versions of APIs comes very…


Simulated Covariance for .NET Generics

I just wrote this pattern, but I am not sure if I should add it officially to the Framework Design Guidelines. It seems like a bit of a corner case scenario, though I do get questions about it from time to time. Anyway, let me know what you think.    Different constructed types don’t have a common root type….


Job Openings on the .NET Framework Core Team

  We have been incubating ideas about building a simple extensibility framework for some time. Now, as plans for the next version of the .NET Framework crystallize a bit more, we decided to productize the project. As a result, we have opened a job position (and most probably will be opening more) on the .NET…


LINQ Design Guidelines

Mircea, a program manager on my team, has worked on development of design guidelines for LINQ related features. The guidelines were reviewed internally and are now available on Mitch’s blog. We might still iterate on them a bit, but quite soon I plan to incorporate them into Framework Design Guidelines manuscript, so if you have…


Video Recording of "Framework Engineering: Architecting, Designing, and Developing Reusable Libraries"

I just received a video recording of a talk I did at the last TechEd. You can find the abstract below, and the WMV file can be downloaded from here. Hope you find it useful. [UPDATE: I attched the slides in xps format. The ppt file is 10x larger] Framework Engineering: Architecting, Designing, and Developing Reusable Libraries  …


Framework Design Guidelines 2nd Edition

My blog was relatively silent for several weeks. First, I was traveling to Europe for the TechEd, then was busy at work, then the holiday break. It’s time to go back to more regular posting. I will start with an announcement (or at least a more formal and broader announcement): after my TechEd presentation, the…


Duck Notation

I have been working with the C# and VB teams on design guidelines for LINQ. We started to talk about the so called Query Pattern, which describes what you need to do if you want a custom type to support the new query operators (select, where, group by, etc.). The query operators use duck typing…