SÓLIDO

Principios de diseño de programación orientada a objetos

En programación de software , SOLID es un acrónimo mnemotécnico de cinco principios de diseño destinados a hacer que los diseños orientados a objetos sean más comprensibles, flexibles y fáciles de mantener . Aunque los principios SOLID se aplican a cualquier diseño orientado a objetos, también pueden formar una filosofía central para metodologías como el desarrollo ágil o el desarrollo de software adaptativo . [1]

Principios

Principio de responsabilidad única

El principio de responsabilidad única ( PRU ) establece que "nunca debería haber más de una razón para que una clase cambie". [2] En otras palabras, cada clase debería tener una sola responsabilidad. [3]

Importancia

  • Mantenibilidad: cuando las clases tienen una responsabilidad única y bien definida, son más fáciles de entender y modificar.
  • Capacidad de prueba: es más fácil escribir pruebas unitarias para clases con un solo enfoque.
  • Flexibilidad: Los cambios en una responsabilidad no afectan a partes no relacionadas del sistema. [3]

Principio abierto-cerrado

El principio abierto-cerrado ( OCP ) establece que "las entidades de software... deben estar abiertas a la extensión, pero cerradas a la modificación". [4]

Importancia

  • Extensibilidad: Se pueden agregar nuevas funciones sin modificar el código existente.
  • Estabilidad: Reduce el riesgo de introducir errores al realizar cambios.
  • Flexibilidad: Se adapta más fácilmente a los requisitos cambiantes.

Principio de sustitución de Liskov

El principio de sustitución de Liskov ( LSP ) establece que "las funciones que utilizan punteros o referencias a clases base deben poder utilizar objetos de clases derivadas sin saberlo". [5] Véase también diseño por contrato . [5]

Importancia

  • Polimorfismo: permite el uso de comportamiento polimórfico, haciendo que el código sea más flexible y reutilizable.
  • Confiabilidad: garantiza que las subclases se adhieran al contrato definido por la superclase.
  • Predictibilidad: garantiza que reemplazar un objeto de superclase con un objeto de subclase no romperá el programa. [5]

Principio de segregación de interfaz

El principio de segregación de interfaces ( ISP ) establece que "los clientes no deberían verse obligados a depender de interfaces que no utilizan". [6] [7]

Importancia

  • Desacoplamiento: Reduce las dependencias entre clases, haciendo que el código sea más modular y mantenible.
  • Flexibilidad: permite implementaciones de interfaces más específicas.
  • Evita dependencias innecesarias: los clientes no tienen que depender de métodos que no utilizan.

Principio de inversión de dependencia

El principio de inversión de dependencia ( DIP ) establece que hay que depender de abstracciones, no de cosas concretas. [8] [7]

Importancia

  • Acoplamiento flexible: reduce las dependencias entre módulos, lo que hace que el código sea más flexible y más fácil de probar.
  • Flexibilidad: Permite realizar cambios en las implementaciones sin afectar a los clientes.
  • Mantenibilidad: hace que el código sea más fácil de entender y modificar. [8] [7]

Origen

El ingeniero de software e instructor, Robert C. Martin , [9] [10] [1] presentó la colección de principios en su artículo de 2000 Design Principles and Design Patterns sobre la corrupción del software . [10] [7] : 2–3  El acrónimo SOLID fue acuñado alrededor de 2004 por Michael Feathers. [11]

Véase también

Referencias

  1. ^ ab Metz, Sandi (mayo de 2009). "Diseño orientado a objetos SOLID". YouTube . Archivado desde el original el 2021-12-21 . Consultado el 2019-08-13 .Charla dada en la Conferencia Gotham Ruby de 2009 .
  2. ^ "Principio de responsabilidad única" (PDF) . objectmentor.com . Archivado desde el original el 2 de febrero de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  3. ^ ab Martin, Robert C. (2003). Desarrollo ágil de software: principios, patrones y prácticas. Prentice Hall. pág. 95. ISBN 978-0135974445.
  4. ^ "Principio abierto/cerrado" (PDF) . objectmentor.com . Archivado desde el original el 5 de septiembre de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  5. ^ abc "Principio de sustitución de Liskov" (PDF) . objectmentor.com . Archivado desde el original el 5 de septiembre de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  6. ^ "Principio de segregación de interfaz" (PDF) . objectmentor.com . 1996. Archivado desde el original el 5 de septiembre de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  7. ^ abcd Martin, Robert C. (2000). "Principios de diseño y patrones de diseño" (PDF) . objectmentor.com . Archivado desde el original el 6 de septiembre de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  8. ^ ab "Principio de inversión de dependencia" (PDF) . objectmentor.com . Archivado desde el original el 5 de septiembre de 2015.{{cite web}}: CS1 maint: URL no apta ( enlace )
  9. ^ Martin, Robert C. "Principios de OOD". ButUncleBob.com . Archivado desde el original el 10 de septiembre de 2014. Consultado el 17 de julio de 2014 .. (Nótese la referencia a "los primeros cinco principios", aunque el acrónimo no se utiliza en este artículo). Se remonta al menos a 2003.
  10. ^ ab Martin, Robert C. (13 de febrero de 2009). "Getting a SOLID start". Uncle Bob Consulting LLC (Google Sites) . Archivado desde el original el 17 de septiembre de 2013. Consultado el 19 de agosto de 2013 .
  11. ^ Martin, Robert (2018). Arquitectura limpia: guía para el artesano sobre la estructura y el diseño de software. Pearson. pág. 58. ISBN 978-0-13-449416-6.
Obtenido de "https://es.wikipedia.org/w/index.php?title=SÓLIDO&oldid=1258964850"