Module 1: OOD Foundations & Code Smells
This page aggregates the generated reference routes used by the learner-facing module.
- Semester:
semester-03-software-design - App:
foundations
Read only if stuck
- Clean Code: Maintaining cohesion
- OOAD: Cohesion and coupling
- OOAD: Modular design and encapsulation
- Head First: The Power of Loose Coupling
- Refactoring: Encapsulate Variable
- Refactoring: Encapsulate Collection
- Refactoring: Encapsulate Record (Part 1)
- Clean Code: Data abstraction
- Design Patterns: Decoupling senders and receivers
- Good Code, Bad Code: Classes (Part 1)
- Clean Code: Single Responsibility Principle
- Head First: The Single Responsibility Principle
- Head First: The Open-Closed Principle
- Design Patterns: Designing for change (Part 1)
- OOAD: Why Pixel is not SolidRectangle / LSP
- OOAD: The Interface Segregation Principle
- Good Code, Bad Code: Interfaces
- Good Code, Bad Code: Class inheritance can be problematic
- Good Code, Bad Code: Design with Dependency Injection in mind
- Clean Code: Systems / Dependency Injection
- Clean Code: Meaningful Names -- introduction
- Clean Code: Pronounceable names
- Clean Code: Interfaces and implementations (naming)
- Clean Code: Add meaningful context
- Clean Code: Functions -- Small, blocks and indenting
- Clean Code: Functions -- Do one thing, top-to-bottom
- Clean Code: Functions -- Switch statements and arguments
- Clean Code: Functions -- Side effects and error handling
- Clean Code: Functions -- Don't repeat yourself
- Clean Code: Comments -- do not make up for bad code
- Clean Code: Comments -- redundant to scary noise
- Clean Code: Comments -- use a function instead
- Good Code, Bad Code: Comments are a poor substitute for names
- Good Code, Bad Code: Use comments appropriately
- Good Code, Bad Code: Functions
- Refactoring: Extract Function (Part 1)
- Refactoring: Extract Function (Part 2)
- Refactoring: Inline Function
- Refactoring: Change Function Declaration
- Refactoring: Mysterious Name smell
- Refactoring: Long Function to Long Parameter List
- Refactoring: Global Data to Mutable Data
- Refactoring: Divergent Change to Feature Envy
- Refactoring: Data Clumps to Repeated Switches
- Refactoring: Loops to Message Chains
- Refactoring: Middle Man to Alternative Classes
- Refactoring: Data Class and Comments
- Refactoring: Replace Primitive with Object
- Refactoring: Extract Class
- Refactoring: Introduce Parameter Object
- Refactoring: Replace Conditional with Polymorphism (Part 1)
- Refactoring: Replace Conditional with Polymorphism (Part 2)
- Clean Code: Smells -- G5 to G11
- Clean Code: Smells -- G12 to G18
- Good Code, Bad Code: Caring too much about other classes
- Refactoring: Move Function (Part 1)
- Refactoring: Move Function (Part 2)
- Refactoring: Combine Functions into Class
- Refactoring: Extract Superclass and Collapse Hierarchy
- Refactoring: Replace Subclass with Delegate (Part 1)
- Refactoring: Refactoring, Architecture, and YAGNI
- Refactoring: Problems with Refactoring (Part 2)
- Refactoring: When Should We Refactor (Part 1)
- Good Code, Bad Code: When layers get too thin
- Clean Code: SRP
- Head First: OCP
- OOAD: LSP and Pixel vs SolidRectangle
- OOAD: ISP
- Good Code, Bad Code: Design with DI in mind
- Clean Code: Functions -- Do One Thing
- Clean Code: Comments do not make up for bad code
- Refactoring: Architecture, YAGNI, and refactoring