La relevancia de los principios SOLID

Los principios SOLID se introdujeron por primera vez en 2000 en el artículo Principios de diseño y patrones de diseño de Robert Martin, también conocido como el tío Bob. 





Han pasado dos décadas desde entonces. Surge la pregunta: ¿estos principios siguen siendo relevantes? 





Esta es una traducción del artículo del tío Bob, publicado en octubre de 2020, en el que analiza la relevancia de los principios SOLID para el desarrollo moderno.       





Recientemente recibí un correo electrónico con algunas de las siguientes consideraciones:





Durante años, el conocimiento de los principios SÓLIDOS ha sido el estándar a la hora de contratar. Se esperaba que los candidatos confiaran en estos principios. Más tarde, sin embargo, uno de nuestros gerentes, que ya casi nunca escribe código, se preguntó si esto era razonable. Argumentó que el principio de abierto-cerrado se ha vuelto menos importante, ya que en su mayor parte ya no escribimos código para grandes monolitos. Y realizar cambios en microservicios compactos es seguro y sencillo.





El principio de sustitución de Liskov ha quedado obsoleto durante mucho tiempo, porque ya no prestamos tanta atención a la herencia como hace 20 años. Creo que deberíamos considerar la posición de Dan North en SOLID - "Escribir código simple"





En respuesta, escribí la siguiente carta.





Los principios SOLID siguen siendo tan relevantes hoy como lo eran hace 20 años (y antes). Porque el software no ha cambiado mucho a lo largo de los años, lo que a su vez es una consecuencia del hecho de que el software no ha cambiado mucho desde 1945, cuando Turing escribió las primeras líneas de código para una computadora electrónica. El software sigue siendo operadores if



, bucles while



y operaciones de asignación: secuencia, selección, iteración .    





A cada nueva generación le gusta pensar que su mundo es muy diferente del mundo de la generación anterior. Cada nueva generación se equivoca en esto, y se enteran tan pronto como llega la próxima generación para decirles cuánto han cambiado las cosas. <risa>





Entonces, repasemos los principios en orden. 





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-, . . , , , , , .





En cada caso, las diapositivas de Den terminan con la frase "Escribe un código simple". Este es un buen consejo. Sin embargo, si algo nos han enseñado los años es que la sencillez exige una disciplina guiada por principios. Son estos principios los que definen la simplicidad. Es esta disciplina la que impulsa a los programadores a escribir código simple.





La mejor manera de crear confusión es decirles a todos que “sean simples” y no dar más instrucciones. 








All Articles