Sobes.tech
Senior

Donnez des exemples de violations des principes 'SOLID' dans les bibliothèques standard.

sobes.tech IA

Réponse de l'IA

Les principes SOLID dans la plupart des bibliothèques standard d'Apple sont respectés à un niveau élevé. Cependant, on peut trouver des exemples où leur application n'est pas aussi stricte ou comporte des exceptions:

  • Principe de responsabilité unique (SRP): Certaines classes dans UIKit ou Foundation effectuent plusieurs tâches non liées. Par exemple, UIViewController peut être responsable non seulement de la gestion des vues, mais aussi du traitement des données, de la navigation, etc.
  • Principe d'ouverture/fermeture (OCP): Étendre la fonctionnalité de certaines classes standard nécessite parfois de modifier la classe elle-même, plutôt que de créer une sous-classe ou d'utiliser un protocole. Un exemple peut être l'ajout de nouvelles fonctionnalités à UITableViewDataSource existant sans pouvoir facilement remplacer une partie de son comportement.
  • Principe de substitution de Liskov (LSP): Dans certaines hiérarchies de classes, par exemple dans la gestion des gestes (UIGestureRecognizer et ses sous-classes), il n'est pas toujours possible de remplacer la classe de base par sa sous-classe sans changer le comportement de l'application.
  • Principe de segregation des interfaces (ISP): Certains protocoles dans les bibliothèques standard peuvent contenir trop de méthodes, dont toutes ne sont pas nécessaires à toutes les classes qui les implémentent. Un exemple peut être le protocole UITableViewDelegate, qui a de nombreuses méthodes optionnelles.
  • Principe d'inversion des dépendances (DIP): Bien que l'injection de dépendances soit activement utilisée dans le développement moderne pour iOS, dans certaines anciennes parties des frameworks, les dépendances peuvent être fortement couplées, ce qui complique les tests et le remplacement des composants.

Il est important de noter que ces "violations" sont souvent des compromis, dictés par l'histoire du développement, la performance ou pour simplifier l'utilisation de l'API dans des scénarios typiques. Dans la plupart des cas, une conception intelligente de l'application basée sur les bibliothèques standard permet de suivre les principes SOLID.