Herramientas de usuario

Herramientas del sitio


foo

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
foo [2023/04/08 15:29] – [Liskov Substitution Principle] tempwinfoo [2023/04/08 15:57] (actual) – [Uncle Bob SOLID principles] tempwin
Línea 388: Línea 388:
  
 ===== Uncle Bob SOLID principles ===== ===== Uncle Bob SOLID principles =====
 +
 +Las bases de la programación orientada a objetos son:
 +
 +  * Encapsulación
 +  * Herencia
 +  * Polimorfismo
  
 La programación orientada a objetos va sobre la gestión de dependencias en el código para que se pueda prevenir: La programación orientada a objetos va sobre la gestión de dependencias en el código para que se pueda prevenir:
Línea 402: Línea 408:
   * **I**SP: The Interface Segregation Principle.   * **I**SP: The Interface Segregation Principle.
   * **D**IP: The Dependency Inversion Principle.   * **D**IP: The Dependency Inversion Principle.
 +
 +<WRAP center round info 60%>
 +Los principios de diseño **SOLID** son principios, no reglas. Es mejor usar el sentido común cuando se aplica SOLID. **SOLID** es una herramienta, no el objetivo.
 +</WRAP>
  
 ==== Single Responsibility Principle ==== ==== Single Responsibility Principle ====
Línea 418: Línea 428:
  
 Esto quiere decir que deberías poder modificar lo que hace un módulo sin cambiar el módulo. Cambiar el comportamiento del módulo, sin cambiar el módulo. Esto quiere decir que deberías poder modificar lo que hace un módulo sin cambiar el módulo. Cambiar el comportamiento del módulo, sin cambiar el módulo.
 +
 +Extiende la funcionalidad añadiendo nuevo código en lugar de cambiar el exsitente.
 +
 +Separa comportamientos para que el sistema pueda ser fácilmente extensible, pero no pueda romperse.
 +
 +El objetivo es llegar a un punto donde nunca podrás romper el núcleo (//core//) de tu sistema.
  
 ==== Liskov Substitution Principle ==== ==== Liskov Substitution Principle ====
Línea 423: Línea 439:
 Las clases derivadas deben ser usables a través de la interfaz de base sin necesidad de que el usuario sepa la diferencia. Las clases derivadas deben ser usables a través de la interfaz de base sin necesidad de que el usuario sepa la diferencia.
  
-====  The Interface Segregation Principl ====+====  The Interface Segregation Principle ==== 
 + 
 +Ningún cliente debería ser forzado a depender de métodos que no usa. 
 + 
 +Cambiar un método en una clase no debería afectar a clases que no dependen de él. 
 + 
 +Reemplazar interfaces demasiado populadas por varias pequeñas, pero específicas interfaces. 
  
 ==== The Dependency Inversion Principle ==== ==== The Dependency Inversion Principle ====
  
 +Los módulos de alto nivel no deberían depender de módulos de bajo nivel. Ambos deberían depender de abstracciones.
 +
 +Nunca dependas de algo concreto, solo de las abstracciones.
 +
 +Hay que ser capaz de modificar una implementación fácilmente sin alterar el código de alto nivel.
foo.1680960545.txt.gz · Última modificación: por tempwin