in reply to Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"
My favorite test for an API is "Can I remember how to use this after a week and in a hurry without the docs?".
If I can remember the method names and the arguments then the API works for me. If I need the docs open all the time then the API is wrong. Obviously some things are more complicated than others but this is a good start.
--tidiness is the memory loss of environmental mnemonics
In Section
Meditations