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