Skip to Content


Book: A Philosophy Of Software Design
  • Modules are components that make up a more complex system through their properties and interactions with other modules

  • Modules consist of an interface and an implementation

  • The interface of a module is its complexity cost while it’s depth is functionality

    • Thus we prefer deep modules with small interfaces
    • Shallow modules are a code smell
    • Ex: Unix IO interface and Garbage collectors
  • When designing modules, focus on the information needed to perform the task.

    • The order of execution shouldn’t be a concern
  • If the interface resembles the abstractions/internal representation used in the implementation, that’s a code smell

Interface, Code Smell, Information Leakage,