On 12/06/13 11:51, Michael MacFadden wrote:
Thanks. I agree with this perspective.  When I started working with the
codebase, the nested levels of interfaces and implementations made it
impossible to trace through the code.  Personally it seemed like
abstraction for abstraction sake.  Yes.. It made things fairly unit
testable, but maintainability was scarified in other ways.

Agreed. Being a little glib:

Too much indirection = bad (difficult to understand, hard to change)

Too little indirection = bad (less testable, and tightly coupled codebases are even more of a nightmare to change)

good => Goldilocks indirection.


So my preference would be working with the existing codebase, but stripping out superfluous interfaces & indirection, modularising to make each problem space (and it's input / output interfaces) more obvious, and documenting the interfaces & concepts we choose to keep.


Dave

Reply via email to