September 13, 2006

Extension Points

This entry is dedicated to Hardev who came up and ever so politely reminded me that it has been some weeks since my last one.

I've been accumulating topics and do have a few things that I want to talk about so here is one.

A classic refrain in the IT business is 'future proofing', a dangerous and terrible thing. All too often I have sat through requirements and design meetings where people sit and try to anticipate all future ways in which the software could be used. If you ever find yourself in such a meeting, either take it over and talk about 'extension points' or run (don't walk) for the nearest exit and wait for the bloated mess that results to collapse in on itself.

An extension point is an abstraction that allows the easy extension of application behaviour by using patterns such as decorator, factory, strategy etc. Unfortunately as I've already discussed many moons ago, abstractions do make it more difficult to comprehend the code; this means that just adding extension points do have a cost. I find that the extension points that are likely to be used in the future are the ones that are 'sympathetic' to the thrust of the functionality.

In the end extension points should fall naturally out of the design process, however they can be used as a good argument to use against the 'future proofers'.

No comments: