• Aide
  • Eurêkoi Eurêkoi

Livre

Software craft : TDD, Clean Code et autres pratiques essentielles

Résumé

Présentation du software craft, ou craftmanship, une approche du développement fondée sur les bonnes pratiques et sur les compétences de codage des développeurs, dont l'objectif est d'accroître la qualité du logiciel produit en termes de fonctionnalité, de fiabilité et de maintenabilité. Les techniques collaboratives, dites de pair programming, sont notamment décrites.


  • Éditeur(s)
  • Date
    • DL 2022
  • Notes
    • En français
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (XIV-273 p.) : ill., fig. ; 25 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-10-082520-2
  • Indice
    • 681.2 Programmation (généralités)
  • Quatrième de couverture
    • Software Craft

      TDD, Clean Code et autres pratiques essentielles

      Le Software Craft est une approche de développement logiciel qui s'inscrit dans le prolongement des approches agiles et les complète avec les aspects d'ingénierie.

      Le Software Craft n'est pas une technologie de plus qu'on télécharge, et qu'on découvre avec un tutoriel : c'est un ensemble d'attitudes qu'on apprend à adopter pour être plus efficace dans la conception du code.

      Ce livre détaille les principales techniques de la boîte à outils du craft :

      • le TDD (Test-Driven Development) ou développement dirigé par les tests,
      • le BDD (Behavior-Driven Development) ou développement dirigé par le comportement,
      • les techniques de refactoring et propreté du code (Clean Code),
      • les techniques de Legacy Remediation (remaniement du code hérité),
      • les techniques de conception orientée objet (OO), le style de programmation fonctionnelle (FP), les principes de conception SOLID...,
      • les techniques de collaboration, en particulier le binômage (pair programming) et le mob programming.

  • Tables des matières
      • Software craft

      • TDD, Clean Code et autres pratiques essentielles

      • Cyrille Martraire

      • Arnaud Thiéfaine

      • Dorra Bartaguiz

      • Fabien Hiegel

      • Houssam Fakih

      • Dunod

      • Avant-propos VII
      • Partie 1
      • Les pratiques incontournables du craft
      • 1 Le Développement Dirigé par les Tests (TDD) 3
      • 1.1 Une technique pour programmer efficacement des fonctionnalités complexes3
      • 1.2 Les principes et les étapes du TDD4
      • 1.3 Rigueur nécessaire à chaque étape6
      • 1.4 Anatomie d'un test7
      • 1.5 Autres conseils sur les tests9
      • 1.6 TDD en pratique sur un kata très simple9
      • 1.7 Conclusion20
      • 2 Techniques et principes de propreté de code (Clean Code) 23
      • 2.1 Programmer comme un exercice de communication23
      • 2.2 L'importance d'être exemplaire24
      • 2.3 Principes essentiels pour un code lisible et évolutif25
      • 2.4 Des commentaires à consommer avec modération34
      • 2.5 Ne pas se répéter (DRY)37
      • 2.6 La propreté de code aussi pour les tests38
      • 2.7 Conclusion39
      • 3 Les spécifications agiles avec le développement dirigé par le comportement (BDD) 41
      • 3.1 Les 3 amigos (tres amigos)42
      • 3.2 Des rôles complémentaires42
      • 3.3 3+ amigos43
      • 3.4 Les ateliers de spécifications43
      • 3.5 Exemples concrets43
      • 3.6 Des exemples exprimés dans le langage du métier44
      • 3.7 Après les ateliers de spécifications47
      • 3.8 Automatisation des scénarios48
      • 3.9 Un effort, beaucoup de bénéfices52
      • 3.10 Techniques complémentaires52
      • 3.11 Démarrer BDD55
      • 4 Collaborer efficacement avec le pair & mob programming 57
      • 4.1 Le binômage (pair programming)57
      • 4.2 Comment binômer ?58
      • 4.3 Styles de binômage59
      • 4.4 Motivations pour choisir de binômer64
      • 4.5 La vie à deux66
      • 4.6 Le mob programming (ou ensemble programming)72
      • 5 L'importance des techniques de refactoring 75
      • 5.1 Transformer le code pour l'améliorer75
      • 5.2 Le code : une matière en perpétuelle transformation76
      • 5.3 Le refactoring comme antidote de la dette technique76
      • 5.4 Les freins au refactoring77
      • 5.5 Un principe fondateur : exprimer l'intention78
      • 5.6 Principes méthodologiques de refactoring78
      • 5.7 Patterns de refactoring : la boîte à outils79
      • 5.8 Refactoring vers des design patterns84
      • 5.9 Combinaison de patterns84
      • 5.10 Situations nécessitant du refactoring85
      • 5.11 Situations impropres au refactoring85
      • 5.12 Refactorer aussi le code de test86
      • 5.13 Conclusion87
      • 6 Travailler avec du code legacy 89
      • 6.1 L'enfer du legacy90
      • 6.2 Apprivoiser le code legacy91
      • 6.3 Tester le code legacy94
      • 6.4 Rendre testable le code legacy104
      • 6.5 Refactorer le code legacy110
      • 6.6 Pour aller plus loin : l'approche scratch refactoring112
      • 6.7 Pour aller plus loin : l'approche d'amélioration marginale113
      • 6.8 Conclusion113
      • 7 Étude détaillée du kata Fraction 115
      • 7.1 Pourquoi les fractions ?115
      • 7.2 Présentation du kata Fraction116
      • 7.3 Premier exercice : implémentation sans contraintes116
      • 7.4 Décomposition118
      • 7.5 Exploration119
      • 7.6 Découpage120
      • 7.7 Second exercice : implémentation avec l'approche TDD121
      • 7.8 Les quatre règles de design simple appliquées au kata134
      • Partie 2
      • Techniques avancées et élargissements
      • 8 Principes et outils pour tester efficacement 139
      • 8.1 Les caractéristiques des tests : les tests unitaires F.I.R.S.T139
      • 8.2 Doublures de tests (test double)142
      • 8.3 Types de tests, au-delà des tests unitaires153
      • 8.4 Conclusion161
      • 9 Outils et techniques avancées de TDD 163
      • 9.1 Baby steps et ordonnancement des tests163
      • 9.2 Styles de TDD165
      • 9.3 Lidée du TDD poussée au maximum : TDD as if you meant it173
      • 10 Techniques de conception 179
      • 10.1 Principes essentiels de conception179
      • 10.2 Le jeu de contraintes « Object Calisthenics »184
      • 10.3 Principes de programmation fonctionnelle190
      • 10.4 Code smells courants191
      • 10.5 Design patterns classiques comme destinations de refactorings200
      • 11 Transformations de code à caractère architectural 207
      • 11.1 Découpler un lien navigable par une méthode de recherche208
      • 11.2 Refactorer vers une architecture hexagonale210
      • 11.4 Évoluer progressivement vers un style réactif orienté chorégraphie215
      • 11.5 Rendre un service stateless223
      • 11.6 Rendre un service idempotent naturellement227
      • Partie 3
      • Craft et attitudes
      • 12 Introduire le craft dans votre contexte 231
      • 12.1 Démarrer le craft à titre Individuel ou entre collègues231
      • 12.2 Introduire le craft dans une organisation233
      • 12.3 Les causes d'échec du craft236
      • 13 Au-delà des pratiques, un état d'esprit 239
      • 13.1 Développer son savoir-faire239
      • 13.2 Cultiver son savoir-être245
      • 13.3 Professionnalisme251
      • 14 Craft 2.0 257
      • 14.1 Attitudes et aptitudes257
      • 14.2 Le craft en contexte (big) data259
      • 14.3 Le craft en contexte DevOps260
      • 14.4 Le craft en contexte machine learning260
      • 14.5 Le craft en contexte cloud & serverless261
      • 14.6 Évolution et suite du craft261
      • Annexe 1 : Katalogue, les katas incontournables 263
      • Annexe 2 : La bibliothèque idéale des crafters 265
      • Index 271

  • Origine de la notice:
    • BPI
  • Disponible - 681.2 SOF

    Niveau 3 - Informatique