of Object-Oriented Programming in Java
Course Outline
Day 1
Coding for Readability and Maintainability
The Problems
The Objectives
Forms of Software Rot
Attributes of a Good Design
Clean Code Qualities
Professional Responsibilities
Automated testing, TDD and Refactoring Practices Review
Refactoring
Exercise
Single Responsibility Principle
Problem addressed by SRP
Example design violating SRP
Example design conforming to SRP
Patterns built on SRP
Exercise
Day 2
Dependency Inversion Principle
Problems with Procedural Programming
Object-Oriented Programming
Problem addressed by DIP
The Dependency Inversion Principle
Dependency Inversion Heuristics
When is DIP appropriate/inappropriate
Example design violating DIP
Example designs conforming to DIP
Exercise
Open/Closed Principle
Problem addressed by OCP
The Open/Closed Principle
When is OCP appropriate/inappropriate
Several Example designs violating OCP
Several example designs conforming to OCP
Exercise
Liskov Substitution Principle
Problem addressed by LSP
The Liskov Substitution Principle
Example designs violating LSP
Example designs conforming to LSP
Relationship OCP/LSP
When is ?instance of is? not an LSP problem
Exercise
Day 3
Interface Segregation
Problem addressed by ISP
The Interface Segregation Principle
Example designs violating ISP
Example designs conforming to ISP
When is ISP appropriate/inappropriate
Exercise
Law of Demeter
Problem addressed by LoD
Example design violating LoD
Example designs conforming to LoD
When is LoD appropriate/inappropriate
Pro/Con discussion
Exercise
Practices That Support the Principles
Simple Design
Automated Testing
Test-Driven Development
Refactoring
Teamwork
Pair Programming
Collective Ownership
Quick Design Sessions
Continuous Integration
Code/Design Reviews
Summary
Clean code
Professional Responsibilities
SOLID Principles
Packaging Principles