Creeping Featurism


Author: Mark Overmeer



These slides are part of a 45 minutes talk, as presented at the YAPC::Europe 2002 conference in München Germany, 20 september 2002.


'Featurism' has a bad name: adding extensive features (functionality) to your code. More features means more code; more code means more complexity. More featurs will reduce the overall speed, and increase the chance on bugs.

However, consider the alternative as well. Less features force users to program more around your code. And not everyone is an as gifted programmer as you are! Besides, where other people start filling-up the holes you let, they stumple on unexpected problems and bother you with questions. With some bad luck, they post modules extending your code, which break each time you upgrade your work.

It is hard to select between features to implement and features to skip. However, if you decide to include a functionality in your module, then you should do it in the full extend: with documentation, tests, and examples.

This talk takes a simple feature as example -- "search for a string in an e-mail message" --, and shows what implications this has for an Object Oriented program (you do not really need to know the details on Object Oriented programming) It shows how you can add complex features, and still keep the code relatively straight forward and testable.