☰ Menu
Ousterhout
A Philosophy of Software Design
Introduction
Overview
Structure & Complexity
Deep vs Shallow Modules
Information Hiding
General-Purpose Design
Complexity Absorption
Define Errors Out of Existence
Clarity & Naming
Outcome-Oriented Naming
Comments That Transfer Knowledge
Code Obviousness
Design Patterns
Consistency as a Tool
Red Flags Catalogue
Controversial Takes
TDD — Use With Caution
Getters, Setters & Unit Tests
Synthesis
The Core Thesis
Loading content…