I do a lot of thinking when I am not developing libraries of abstractions in the hope they will make my (and my colleagues') work easier in the future. When I think I mainly think about how to make things better / easier / more foolproof.
Just recently I have seen the light of Dependency Injection as a solution to a problem that Steve Yegge is convinced does not exist (although from his comments on it I suspect he may have only seen a good idea mis-applied; I wholeheartedly agree with the main thesis of his post).
Via the vessel of NInject I have been exposed to the concept of Fluent Interfaces, how they (don't?) relate to DSLs, and tons and tons of misconceptions about the usefulness of Fluency as an API design choice under the right circumstances.
And all this has mushroomed into a Wikipedia-like meandering about topics of API design, only to come to the conclusion that there doesn't appear to be any well-reasoned discussion of how to come to a good API that does not involve trying to mesh several partially-orthogonal and incomplete discussions.
Maybe I am missing a site containing the holy grail somewhere. Not being able to find it however, its existence is indistinguishable from it's non-existence, so the best I can do is try to figure it out for myself.
As I go along digesting information I am going to try and build a series of "API Design Research" posts referencing the sources I am reading and my opinions and "lessons learned". Hopefully this will all end in one or more posts distilling it all down to practical advice, mainly for myself, but hopefully useful to others as well.
Disclaimer: I currently operate in a C# .NET universe, and as such, all my discussions will be biased towards what makes sense in that context. I am sure some of my conclusions are not going to be valid in "language X" for your favourite value of "X"... I am sorry, but I also do not care.

Post new comment