Presentation is loading. Please wait.

Presentation is loading. Please wait.

 What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions.

Similar presentations


Presentation on theme: " What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions."— Presentation transcript:

1

2  What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions

3

4  A means to avoid technical debt  Decrease Coupling  Increase Cohesion  Maintainable  Extensible  Testable

5  Guidelines, NOT LAWS You got to know when to hold’em, know when to fold’em, Know when to walk away and know when to run. -Kenny Rogers

6 Application Flat File EmailSender SendEmail GetMessage

7 Single Responsibility Principle There should never be more than one reason for a class to change -Uncle Bob

8 VIOLATES THE PRINCIPLEABIDES BY THE PRINCIPLE Application Flat File EmailSender SendEmail GetMessage Application Flat File FileReader GetMessage EmailSender SendEmail

9 Application Flat File FileReader GetMessage EmailSender SendEmail XML File

10 Open-Close Principle Software entities (classes, modules, functions, etc…) should be open for extension, but closed for modification -Uncle Bob

11 VIOLATES THE PRINCIPLEABIDES BY THE PRINCIPLE Application Flat File FileReader GetMessage EmailSender SendEmail XML File Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader

12 Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader DB File DbFileReader CanRead ReadFile Database

13 Liskov Substitution Principle Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it -Uncle Bob

14 VIOLATES THE PRINCIPLEABIDES BY THE PRINCIPLE Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader DB File DbFileReader CanRead ReadFile Database Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader DbReader GetMessage Database

15 Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader Database IReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader DbReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader

16 Interface Segregation Principle Clients should not be forced to depend upon interfaces that they do not use -Uncle Bob

17 ABIDES BY THE PRINCIPLE Application Flat File BaseFileTypeReader CanRead ReadFile EmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader Database IReader GetMessage DbReader GetMessage IFileTypeReaderRegisterable RegisterDefaultFileTypeReader RegisterFileTypeReader

18 Dependency Inversion Principle High level modules should not depend upon low level modules. Both should depend upon abstractions Abstractions should not depend upon details. Details should depend upon abstractions -Uncle Bob

19 ABIDES BY THE PRINCIPLE Application Flat File BaseFileTypeReader CanRead ReadFile IEmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader Database IReader GetMessage DbReader GetMessage IFileTypeReaderRegisterable RegisterDefaultFileTypeReader RegisterFileTypeReader EmailSender SendEmail

20 Application Flat File EmailSender SendEmail GetMessage Xml File Database

21 Application Flat File BaseFileTypeReader CanRead ReadFile IEmailSender SendEmail XML File FlatFileReader CanRead ReadFile XmlFileReader CanRead ReadFile FileReader GetMessage RegisterDefaultFileTypeReader RegisterFileTypeReader Database IReader GetMessage DbReader GetMessage IFileTypeReaderRegisterable RegisterDefaultFileTypeReader RegisterFileTypeReader EmailSender SendEmail

22

23  Martin Folwer – Technical Debt  http://www.martinfowler.com/bliki/TechnicalDebt.html http://www.martinfowler.com/bliki/TechnicalDebt.html  Wikipedia – Coupling  http://en.wikipedia.org/wiki/Coupling_(computer_programming) http://en.wikipedia.org/wiki/Coupling_(computer_programming)  Wikipedia – Cohesion  http://en.wikipedia.org/wiki/Cohesion_(computer_science) http://en.wikipedia.org/wiki/Cohesion_(computer_science)  Robert Martin – The Principles of OOD  http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod  Derick Bailey – SOLID Principles – Step by step code  https://github.com/derickbailey/presentations-and- training/tree/master/SOLID%20Principles%20- %20Step%20By%20Step%20Code https://github.com/derickbailey/presentations-and- training/tree/master/SOLID%20Principles%20- %20Step%20By%20Step%20Code

24  Email – twang1978@gmail.comtwang1978@gmail.com  Twitter – @tonycwang  LinkedIn – www.linkedin.com/in/tonycwangwww.linkedin.com/in/tonycwang


Download ppt " What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions."

Similar presentations


Ads by Google