My chapter in Beautiful Code is titled
Another Level of Indirection. In it I discuss how the filesystem code in the
FreeBSD kernel employs various levels of indirection to structure the features it offers in a coherent way. In a related article,
Abstraction and Variation, appearing in this month's
IEEE Software Tools of the Trade column I explain how indirection is just one of the many mechanisms at our disposal for abstracting away non-essential complexity from the problem at hand.
Comments (1)
It's interesting to me to read this just now, since I was reading a different blog entry on the use of embedded and domain-specific languages in Common Lisp. Those seem to me a critical way of avoiding the kind of structure-obscuring abstractions you warn about in your article. For example, a limited use of macros seems like a much nicer tactic than trying to use functions that have to take enumeration arguments that tell them about their intended use....
Posted by Robert Goldman | October 1, 2007 3:41 PM