S.O.L.I.D. Programming Principles

S.O.L.I.D. Programming Principles
S.O.L.I.D. Programming Principles
English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 1h 45m | 272 MB

There are many principles that support good object-oriented design and programming. Five of these principles are described by SOLID: single responsibility, open-closed, Liskov substitution, interface segregation, and dependency inversion. These principles guide the creation of stable, scalable, and robust code.

To incorporate SOLID into your own development workflow, Steven Lott has prepared a series of lessons that break down the principles one by one, with real-world examples. Learn how to use these principles in the design process, and to test the strength of your code along the way. Steven uses Python to demonstrate the concepts, but they’re useful for any object-oriented programming language.

Topics include:

  • An overview of SOLID principles
  • Segregating code into client-specific modules
  • Testing code by substituting subtypes for base classes
  • Keeping software open for extension but closed to modification
  • Eliminating dependencies on details
  • Assigning one responsibility to each class
  • Using SOLID principles in the design process
Table of Contents

What you should know
Using the exercise files

1. Introduction to S.O.L.I.D. Programming
What could go wrong?
Explore a non-SOLID class
Overview of the SOLID principles

2. Interface Segregation Principle
Introduction to interface segregation
Segregate the example classes
ISP applied to example classes
The wrap vs. extend decision
Extend alternatives

3. Liskov Substitution Principle
Introduction to Liskov substitution
Interface variations
Substitution applied to example classes
Default values for parameters
Avoiding isinstance()

4. The Open/Closed Design Principle
Introduction to Open/Closed design
Modify a class and fix bugs
OCP via inheritance and composition
More OCP extension techniques

5. Dependency Inversion Principle
Introduction to dependency inversion
Dependency injection and application configuration
Testing consequences

6. Single Responsibility Principle
Introduction to single responsibility
High cohesion and indirection
GRASP patterns

7. A Design Process
CRC Cards
Test-driven design

Next steps