foo
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| foo [2023/04/08 15:29] – [Liskov Substitution Principle] tempwin | foo [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, | ||
| + | </ | ||
| ==== 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 | + | ==== The Interface Segregation |
| + | |||
| + | 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
