Sobes.tech
Senior

Proporcione ejemplos de violaciones de los principios 'SOLID' en las bibliotecas estándar.

sobes.tech AI

Respuesta de la IA

Los principios SOLID en la mayoría de las bibliotecas estándar de Apple se cumplen en un alto nivel. Sin embargo, se pueden encontrar ejemplos donde su aplicación no es tan estricta o tiene excepciones:

  • Principio de responsabilidad única (SRP): Algunas clases en UIKit o Foundation realizan varias tareas no relacionadas. Por ejemplo, UIViewController puede ser responsable no solo de gestionar las vistas, sino también de procesar datos, navegación, etc.
  • Principio de abierto/cerrado (OCP): Ampliar la funcionalidad de algunas clases estándar a veces requiere modificar la propia clase, en lugar de crear una subclase o usar un protocolo. Un ejemplo puede ser agregar nueva funcionalidad a UITableViewDataSource existente sin poder reemplazar fácilmente parte de su comportamiento.
  • Principio de sustitución de Liskov (LSP): En algunas jerarquías de clases, por ejemplo, en el manejo de gestos (UIGestureRecognizer y sus subclases), no siempre es posible reemplazar la clase base por su subclase sin cambiar el comportamiento de la aplicación.
  • Principio de segregación de interfaces (ISP): Algunos protocolos en las bibliotecas estándar pueden contener demasiados métodos, no todos necesarios para todas las clases que los implementan. Un ejemplo puede ser el protocolo UITableViewDelegate, que tiene muchos métodos opcionales.
  • Principio de inversión de dependencias (DIP): Aunque la inyección de dependencias se usa activamente en el desarrollo moderno para iOS, en algunas partes antiguas de los frameworks las dependencias pueden estar fuertemente acopladas, dificultando las pruebas y el reemplazo de componentes.

Es importante destacar que estas "violaciones" a menudo son compromisos, condicionados por la historia del desarrollo, el rendimiento o para simplificar el uso de la API en escenarios típicos. En la mayoría de los casos, un diseño inteligente de la aplicación sobre las bibliotecas estándar permite seguir los principios SOLID.