A Philosophy of Software Design
Complexity Complexity comes from an accumulation of dependencies and obscurities. Strategic (long-term approach, thinking about design) vs. Tactical programming (short-term approach, ship features as soon as possible). Modules should be deep #module #interface #implementation Module has two parts: interface and implementation. A module is any unit of code that has an interface and an implementation. Each class in OOP is a module. The best modules are those whose interfaces are much simpler than their implementations. ...