I hate that. I really, really hate that. Here's what I want:
Solve the 80% of the problems with the 20% of the code and then figure out how to expose just enough to the programmer to let him or her solve the rest they way they need to. If they need to.
Case in point: in trying to resolve a particular issue at work, I needed to understand the inheritance hierarchy of some code which uses DBIx::Class, an object-relational mapper written in Perl. It's a fantastic tool. It's a great tool. It's a Swiss Army Chainsaw of ORMs.
We have a "clip" table. With the exception of two fields which should be managed by the database (but aren't -- they're handled by the 'AuditedObject' class you'll see below), we really only need to save 6 pieces of data in this table. Got that? One table with six columns. Here's the class hierarchy:
(Click on the image (and then click again) to see the inheritance heirarchy in all of its glory)
|Bad, bad, bad inheritance hierarchy
Absolute Nightmare of An Inheritance Hierarchy
Yeah, there are some problems in our code, but once you get into the DBIx layer, it's a twisty-little maze of passages. Good luck debugging that.