Design Principles and Design Patterns, Robert C. Martin (archived)