introduction to solid principles

36
Introduction to SOLID Principles

Upload: dave-cook

Post on 18-Aug-2015

241 views

Category:

Technology


5 download

TRANSCRIPT

Introduction to SOLID Principles

Background

• Dependency Inversion Principle

• Single Responsibility Principle

• Open/Closed Principle

• Liskov Substitution Principle

• Interface Segregation Principle

S: Single Responsibility Principle (SRP)

“Every class should have a single responsibility, and that responsibility should be entirely encapsulated by that class”

1. When we need to modify the way we save Customer data

2. When we want to revise the way we log our Exceptions

The Customer class has 2 reasons to change:

Difficulty in naming classes can be a sign that you are trying to do too much, and that this class is taking on too much responsibility

Do One Thing: methods that only do one thing are usually very short: 3-5 lines

Multiple unit tests for the same method should be a warning sign that you are doing too much

SRP - Tips

O: Open/Closed Principle (OCP)

“Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.”

O: Open/Closed Principle (OCP)

Open for extension – you can extend an object’s behaviour

Closed for modification – without the need to modify any existing code

L: Liskov Substitution Principle (LSP)

“If S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of that program”

Favour Interfaces over inheritance (Google this…you’ll find loads!)

Use inheritance sparingly.

Keep inheritance hierarchies from getting to big – aim for no more than two or three deep.

LSP - Tips

I: Interface Segregation Principle (ISP)

“No client should be forced to depend on methods it does not use.”

D: Dependency Inversion Principle (DIP)

“A. High-level modules should not depend on low-level modules. Both should depend on abstractions.

B. Abstractions should not depend on details. Details should depend on abstractions.”

UnityCastle Windsor

IOC Containers

Questions

Follow UsDave Cook

http://tech.comparethemarket.com/author/cookie/

@dcookie_1981

@thectmers