3 ms·
I tend to place the most emphasis on loose coupling, and being very strict about interfaces between components -- both in terms of documentation and addition/ch
by gregmac 9y ago
I tend to place the most emphasis on loose coupling, and being very strict about interfaces between components -- both in terms of documentation and addition/changes. Ideally documentation includes unit or integration tests. This applies to separate high level services as well as it does to internal code structure (classes/modules/etc).
Well documented and tested interfaces of a component make that component easy to replace or rewrite if needed.
Nearly anytime I have worked on or been involved with a project where I or someone else tried to design specifically for a vague future requirement that wasn't entirely clear or guaranteed, it didn't work out: either the requirement never happened, or was so materially different that what we wrote was wrong. As a result, the code we wrote went unused or worse, just got in the way and ended up as unnecessary technical debt.