On Tue, Feb 14, 2012 at 11:47:52PM +0100, Timon Gehr wrote:
> [...]
> It does not hurt at all if your code base is more flexible than
> necessary.
[...]

This needs to be taken in moderation, though.

I've had to work with code that was unnecessarily flexible. (I.e.,
over-engineered.) So flexible, in fact, that almost none of us knew how
to use it, and the code ended up deteriorating into a morass of hacks
attempting to bypass an overly-general framework that nobody understood.

One particularly bad example was that part of the system had a whole
hierarchy of database-access classes, intended to replace having to
write SQL directly. The problem was that it was so poorly documented,
and so difficult to understand, not to mention requiring a instantiating
a whole bunch of objects just to do something as simple as "SELECT *
FROM some_table;", that eventually people just resorted to writing a
function for executing SQL directly, thus bypassing the entire
over-engineered mess.

And that was only a small part of it. There were other beautifully
designed, fully OO, and fully generic classes, that accomplished
everything from the most trivial of tasks to the most advanced
high-level abstractions. Like the IPC mechanism, for which at one point
I had to write code to get through *six* layers of abstraction just to
call a single function. One layer of which involved fwrite(), fork(),
exec(), and fread(). Such was the result of the original code base being
much too flexible than it needed to be.


T

-- 
Why are you blatanly misspelling "blatant"? -- Branden Robinson

Reply via email to