29 lines
1.5 KiB
Markdown
29 lines
1.5 KiB
Markdown
|
---
|
||
|
title: SOLID Principle
|
||
|
---
|
||
|
## SOLID Principle
|
||
|
|
||
|
A key programming princple which consists of the following conventions:
|
||
|
(S)ingle Responsibility Principle
|
||
|
(O)pen/Closed Principle
|
||
|
(L)iskov Substitution Principle
|
||
|
(I)nterface Segregation Principle
|
||
|
(D)ependency Inversion
|
||
|
|
||
|
Solid Responsibilty means a class should only do one thing (and preferably, do it well). So if a class is currently
|
||
|
interacting with some SQL database, and also can generate a HTML page from them - the two functionalities should be seperated.
|
||
|
|
||
|
Open/Closed Principle means you two never modify an existing class, but rather to extend them (does the word 'inheritance' ring
|
||
|
any bells for you?).
|
||
|
|
||
|
Liskov Substitution is one most often ignored. It means that whenever a code is written with use of base and child classes,
|
||
|
it should be written as such that the program will never crash even if the child classes are substituted with their parent's.
|
||
|
Suppose we have an Animal base class and a Dog\Cat child classes: It should not harm the flow if we write every Dog instance with
|
||
|
an Animal's.
|
||
|
|
||
|
Interface Segregation Principle means that when writing interfaces, it is better to write many ones each with very particular
|
||
|
purpose, rather than having one interface to rule them all. Programmers are more likely to reuse small ones, and programs will
|
||
|
be less cloggy with having to implement a big one.
|
||
|
|
||
|
Dependency Inversion Principle means in (very) short, dont depend on concrete classes; try to use interfaces more.
|