Les principes SOLID ont été introduits pour la première fois en 2000 dans l'article Design Principles and Design Patterns de Robert Martin, également connu sous le nom d'Oncle Bob.
Deux décennies se sont écoulées depuis lors. La question se pose : ces principes sont-ils toujours d'actualité ?
Il s'agit d'une traduction de l'article d' Oncle Bob , publié en octobre 2020, dans lequel il discute de la pertinence des principes SOLID pour le développement moderne.
J'ai récemment reçu un e-mail avec certaines des considérations suivantes :
Pendant des années, la connaissance des principes SOLID a été la norme lors de l'embauche. Les candidats devaient avoir confiance en ces principes. Plus tard, cependant, un de nos managers, qui n'écrit presque plus de code, s'est demandé si cela était raisonnable. Il a fait valoir que le principe ouvert-fermé est devenu moins important, car pour la plupart, nous n'écrivons plus de code pour les grands monolithes. Et apporter des modifications aux microservices compacts est sûr et facile.
Le principe de substitution de Liskov est dépassé depuis longtemps, car nous ne prêtons plus autant d'attention à l'héritage qu'il y a 20 ans. Je pense que nous devrions considérer la position de Dan North sur SOLID - "Write Simple Code"
En réponse, j'ai écrit la lettre suivante.
Les principes SOLID restent aussi pertinents aujourd'hui qu'ils l'étaient il y a 20 ans (et avant cela). Parce que le logiciel n'a pas beaucoup changé au fil des ans, ce qui est à son tour une conséquence du fait qu'il n'a pas beaucoup changé depuis 1945, lorsque Turing a écrit les premières lignes de code pour un ordinateur électronique. Le logiciel est toujours des opérateurs if
, des boucles while
et des opérations d'affectation - Séquence, Sélection, Itération .
Chaque nouvelle génération aime à penser que son monde est très différent de celui de la génération précédente. Chaque nouvelle génération a tort à ce sujet, ce qu'elle découvre dès que la génération suivante arrive pour lui dire à quel point les choses ont changé. <rires>
Alors, passons en revue les principes dans l'ordre.
SRP - Single Responsibility Principle .
, . , .
, . - . SQL- . , , , . , , , .
. , , .
, ( , , ). SRP - “ ”. . SRP - .
OSP - Open-Closed Principle -
, .
, - , . , , , . , , ? if
, , ?
... ? - , ? !
(. , , )
. ó - . , , . - “ ”. . , . .
LSP - Liskov Substitution Principle
, , .
( ) , . . . , . , , . , if/switch
.
- . .
, . - , .
ISP - Interface Segregation Principle
, .
- . , , . , - A B , , B A.
, Java, C#, C++, GO, Swift .. , - Maven Leiningen .
(. “ , ” “ !!”)
(. “ - !”)
, , (SRP). .
DIP - Dependency Inversion Principle
. .
, . - . , , . , , , SQL-, . . , , , , , .
Dans chaque cas, les diapositives de Den se terminent par la phrase « Write Simple Code ». C'est un bon conseil. Cependant, si les années nous ont appris quelque chose, c'est que la simplicité exige une discipline guidée par des principes. Ce sont ces principes qui définissent la simplicité. C'est cette discipline qui pousse les programmeurs à écrire du code simple.
La meilleure façon de semer la confusion est de dire à tout le monde « restez simple » et de ne pas donner d'autres instructions.