TD 3 : Les principes SOLID

Le dernier TD nous a permis de voir un outil essentiel en conception : les patterns ; qui on le rappelle servent à donner des solutions à des problèmes récurrents.

Néanmoins d’autres outils, d’autres règles ont été mises en place pour aider le développeur pendant sa phase de conception.

Ainsi, entre deux TD sur les patrons en conception nous allons vous présenter les règles, les principes S.O.L.I.D.


Les objectifs de ce TD :

  • Vous initier aux bonnes pratiques du programmeur
  • Présenter des principes de programmation pas forcemment connus et pourtant intuitifs et importants

Conclusion


A travers ce TD nous avons vu quelques règles supplémentaires qu’il est utile d’appliquer lors de la conception pour faciliter la phase de programmation mais aussi et surtout pour garder le plus de cohérence possible dans l’application finale.

Afin de faire tout de même un bilan voici les éléments principaux à retenir pour chacune de ces 5 règles :
  • Single responsibility principle (SRP) : Ne pas surcharger une classe avec des responsabilités inutiles
  • Open/closed principle (OCP) : Tout module (package, classe, méthode) doit être ouvert aux extensions mais fermé aux modifications.
  • Liskov subtition principle (LSP) : Les méthodes qui utilisent des objets d'une classe doivent pouvoir utiliser des objets dérivés de cette classe sans même le savoir.
  • Interface segregation principle (ISP) : Les clients ne doivent pas être forcés de dépendre d'interfaces qu'ils n'utilisent pas.
  • Dependency inversion principle (DIP) :
    • Les modules de haut niveau ne doivent pas dépendre de modules de bas niveau. Tous deux doivent dépendre d'abstractions.
    • Les abstractions ne doivent pas dépendre de détails. Les détails doivent dépendre d'abstractions.

Conseils / Les erreurs à ne pas commettre


Comme pour le TD précédent voici quelques conseils, remarques personnelles pour vous aider lors de l'application de ces principes :
  • Avec le principe ouvert/fermé il faut faire attention à ce que la classe "mère" implémente bien la nouvelle interface et redéfinisse les bonnes méthodes avec le type générique pour être sûre de pourvois gérer toutes les classes qui implémetent l'interface.
  • Pour le principe des ségrégation des interfaces il ne faut hésiter à réaliser de nombreuses interfaces tout en restant cohérent dans ses choix c'est à dire essayer de tout de même regrouper les mêmes fonctionnalités.

Auto-évaluation


Chaque principe possède un exemple d'entrainement que vous pouvez appliquer et comprendre. Pour conclure ce troisième TD nous allons vous proposer un QCM dans lequel des questions sur tous les principes présentés vous seront proposé.

-- Scripts -->