On API Consistency

Written on March 20 2010.

This blog post was written a long time ago and may not reflect my current opinion or might be technically out of date. Read with a grain of salt.

Interacting with a well design API is a pleasure. When an interface is consistent and works in the way I expect it to work I feel good. Gregory T. Brown wrote an excellent chapter on this subject in his (now freely available) book 'Ruby Best Practices'.

Something struck me in jQuery last week: map() and each()'s parameters.

From jQuery's documentation:

.map( callback(index, domElement) ) .each( function(index, Element) ) jQuery.each( collection, callback(indexInArray, valueOfElement) ) jQuery.map( array, callback(elementOfArray, indexInArray) )

Ok, what's the deal?
Look at the parameters of the callback of jQuery.map(). The order is different than all the others. Why?

This kind of things drives me nuts.