Is removing duplication worth another abstraction?
Metz weighs the cost of a wrong abstraction against repeated code. Ousterhout asks how much capability a module hides behind a simple interface.
Read on through a shared source
What makes an object useful? →Compare refactoring a pricing rule into small objects with the cost of coordinating objects that carry mutable state. A class boundary alone says little about how its users interact.Small objects or small interfaces? →One talk breaks code into smaller responsibilities. The other limits what callers must learn. Count the decisions exposed to callers as well as the objects inside the implementation.Can small components still be tightly coupled? →Changing component size and changing how components communicate are separate decisions. Passing a value can remove a dependency on a synchronous call.
Compare the passages
It is far cheaper to keep duplication than it is to have to mess with the wrong abstraction.very simple interface with a very large amount of functionality underneath it