DDD (Domain-Driven Design)

SOLID

Principe de conception

Architecture

Références

L'actualité

Librairie

L'information

SOLID

En programmation informatique, SOLID est un acronyme représentant cinq principes de bases pour la programmation orientée objet, introduits par Michael Feathers et Robert C. Martin au début des années 2000.

Ils sont censés apporter une ligne directrice permettant le développement de logiciel plus fiable et plus robuste.

 


S - SRP (Single Responsibility Principle)

   En programmation orientée objet, le principe de responsabilité unique, Robert C. Martin exprime le principe comme suit : "une classe ne doit changer que pour une seule raison" (a class should have only one reason to change)
 

O - OCP (Open / Closed Principle)

   En programmation orientée objet, le principe ouvert/fermé (open/closed principle) affirme qu'une classe doit être à la fois ouverte (à l'extension) et fermée (à la modification).
C'est le " O " de SOLID. "Ouverte" signifie qu'elle a la capacité d'être étendue. "Fermée" signifie qu'elle ne peut être modifiée que par extension, sans modification de son code source.

L'idée est qu'une fois qu'une classe a été approuvée via des revues de code, des tests unitaires et d'autres procédures de qualification, elle ne doit plus être modifiée mais seulement étendue.

En pratique, le principe ouvert/fermé oblige à faire bon usage de l'abstraction et du polymorphisme.

 

L - LSP (Liskov Substitution Principle)

   Le principe de substitution de Liskov (LSP) est, en programmation orientéobjet, une définition particuliére de la notion de sous-type. Il a été formulé par Barbara Liskov et Jeannette Wing dans un article intitulé Family Values: A Behavioral Notion of Subtyping

La notion de sous-type telle que définie par Liskov et Wing est fondée sur la notion de substituabilité : si S est un sous-type de T, alors tout objet de type T peut être remplacé par un objet de type S sans altérer les propriétés désirables du programme concerné.

Le principe de Liskov impose des restrictions sur les signatures sur la définition des sous-types :

  • Contravariance des arguments de méthode dans le sous-type.
  • Covariance du type de retour dans le sous-type.
  • Aucune nouvelle exception ne doit être générée par la méthode du sous-type, sauf si celles-ci sont elles-mêmes des sous-types des exceptions levées par la méthode du supertype.
On définit également un certain nombre de conditions comportementales (voir la section Conception par contrat).

 

I - ISP (Interface Segregation Principle)

   Le principe de ségrégation des interfaces est une bonne pratique de la programmation orientée objet, qui stipule qu'aucun client ne devrait dépendre de méthodes qu'il n'utilise pas.

Il faut donc diviser les interfaces volumineuses en plus petites plus spécifiques, de sorte que les clients n'ont accès qu'aux méthodes intéressantes pour eux.

Ces interfaces rétrécies sont également appelés interfaces de rôle.

Tout ceci est destiné à maintenir un système à couplage faible, donc plus facile à refactoriser.

 

D - DIP (Dependency Inversion Principle)

   En programmation orientée objet, le principe d'inversion des dépendances (dependency inversion principle) fait référence à une forme spécifique de découplage des modules logiciels.
Il correspond au " D " de l'acronyme SOLID. En suivant ce principe, la relation de dépendance conventionnelle que les modules de haut niveau ont, par rapport aux modules de bas niveau, est inversée dans le but de rendre les premiers indépendants des seconds.

Les deux assertions de ce principe sont :
  • Les modules de haut niveau ne doivent pas dépendre des modules de bas niveau. Les deux doivent dépendre d'abstractions.
  • Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions.