D'abord qu'est-ce que le craft? Le terme craft considère que le développement logiciel est davantage artisanal qu'industriel. On va s'attacher à la qualité du code, pour qu'il soit maintenable.
Les principes SOLID permettent d'attendre un seuil de qualité et de sécurité satisfaisant.
On utilise sa propre technique. Quand on développe une application, le codage est une question de design, on doit faire des compromis. Programmer est un acte d'écriture de communication et d'intention avec d'autres personnes. C'est l'art de raconter une histoire: c'est de la littérature.
2 fondateurs de SOLID: Michael Feathers et Robert C. Martin
Solid est un ensemble de pratiques pour créer un logiciel plus robuste et plus maintenable.
Une question? Posez-la ici
Aide au développement d'applications
Principe SOLID poo : Acronyme SOLID
Principe SOLID poo S=Single responsability principle
Un artefact ne doit changer que pour une seule raison.
Exemple un militaire entend la sirène sonner. Soil la base est attaquée, soit il faut partir au front. C'est pareil dans le code, quand on mélange les concepts, ça risque de provoquer des erreurs sur les changements.
Exemples en JAVA: on voit une classe qui fait plein de choses, qui crée un utilisateur, qui envoie un mail. Il faudrait que la classe ne fasse qu'une action. Une classe = une action, une responsabilité.
Il y a donc un risque d'incompréhension du code.
Principe SOLID poo O=Open closed
Ouvert à l'extension, fermé à la modification. Exemple: quand on branche sa Xbox sur la TV, on ne modifie pas la télé, mais on étend usage, c'est l'idée de l'open close: on peut ajouter du code, sans le modifier.
Quand on a une série de if ou de switch, on est à peu près sûr d'avoir un open closed
Principe SOLID poo L=Liskov substitution
Principe: toute classe dérivée doit respecter la signature de sa classe mère. Toute interface implémentée doit respecter son contrat.
Exemple: la salade de cigue: quand j'ai une salade à manger avec de la cigue, je dois tester à chaque coup de fourchette s'il y a de la cigue ou pas. Pareil dans le code, on doit utiliser au minimum le null qui ne respecte aucun contrat. Exemple, une classe dérivée carré qui est un rectangle.
La plupart du temps, quand on a un pointeur null, on a ce type de violation.
Instaceof, isnull, nil, none...
Une question? Posez-la ici
Aide au développement d'applications
Principe SOLID poo : I= segregation des interfaces
On ne doit pas implementer des choses dont on n'a pas besoin.
Supposons que l'on istalle une cuisine IKEA. IKEA a une notice, API, on doit suivre la notice IKEA, l'interface. Il ne faut pas ajouter 3 vis
Définir l'interface en fonction de celui qui a besoin du service. On ne pourra pas utiliser la notice pour une cuisine LEROY MERLIN.
Une interface fournit des fours
Une interface fournuit des frigos
Une interface fournit des plaques de cuisson...
Ne pas mettre une interface qui fournit une baignoire, car on n'en n'a pas besoin dans la cuisine.
Principe SOLID poo : D= Dependency inversion
Principe de l'inversion de dépendance. Sans ça on n'a pas de testabilité. Dans les années 80, on avait l'invention de la programmation structurée: la main appelait plusieurs fonctions jusqu'au drivers, c'était structuré. Plus on remonte dans les couches, plus on embarque des dépendances. La dépendance du runtime est la même que la dépendance du compiletime. En général on met une interface entre les 2. A l'execution, on peut changer l'implémentation de l'interface.
Par exemple, ça serait comme si dans une usine de construction de voiture on ne pouvait pas changer le type de roues.
Quand on fait un new explicit. L'usage des singletons etc.
Une question? Posez-la ici
Aide au développement d'applications
La loi de Demeter
Une entité ne doit parler qu'à ses connaissances, pas aux étrangers.
Exemple: quand on passe au supermarché, on achète une baguette de pain. On doit prendre son portefeuille dans la poche de son pantalon pour prendre des euros dans le portefeuille et les donner à la caissière. On ne doit pas donner son pantalon à la caissière qui elle doit attraper le portefuille, l'ouvrir et prendre les euros.
En programmation objet, on ne va pas explorer un objet pour trouver une donnée dont on a besoin, on demande juste la donnée. Quand on commence à à avoir beaucoup de getters et de setters dans un objet, ça commence à être compliqué. Par exemple, quand on fait des streams, de map de map de reduce, on obtient.
Ne pas utiliser un enchainement pour trouver la structure d'un objet.
Principe SOLID poo : maintenant, on code
Utilisation d'un IDE en ligne:
https://repl.it/languages/java10
Avec le kata wallet sur le coding dojo:
http://codingdojo.org/kata/Wallet/
On appelle une API exterieure: pour tel type de stock et tel matériau cible, combien ça coute.
Un stock est une action d'un type. On a un portefeuille avec des euros, des dollars, des bitcoins, on veut savoir combien le portefeuille vaut en euros
Exemple de code en JAVA, pour ceux qui ont pris quelques cours JAVA:
Cet article reflète exclusivement l'opinion de ses auteurs et n’engage en aucune façon Consultingit. J'espère que ça vous a plu. Vos commentaires/remarques sont les bienvenus: