La démarche de remaniement

Remanier sans changer le comportement : filet de tests, petits pas, un remaniement par commit ; la dette technique et ses quadrants ; remanier ou réécrire, remplacement progressif.

  • 21 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation

Quelques cartes du deck

  • Remaniement : de quoi s'agit-il ?

    Voir la réponse

    Modification de la structure interne d'un code pour le rendre plus clair et plus facile à changer, sans modifier son comportement observable.

    Si le comportement change, ce n'est plus du remaniement : c'est une évolution ou une correction. On en garde la preuve avec des tests qui passent avant et après.

  • Parmi ces modifications, laquelle est un remaniement au sens strict ?

    • Renommer une variable t en tauxTva dans tout le code
    • Corriger l'arrondi d'un total de facture qui perdait un centime
    • Ajouter un champ « téléphone » au formulaire d'inscription
    • Accélérer une requête en supprimant une vérification de droits
    Voir la réponse

    Renommer une variable t en tauxTva dans tout le code

    Seul le renommage laisse le comportement observable intact. Corriger un arrondi, ajouter un champ ou retirer un contrôle changent ce que fait le logiciel.

  • Une règle de discipline : ne jamais mélanger dans un même commit un … et une … du comportement.

    Voir la réponse

    Une règle de discipline : ne jamais mélanger dans un même commit un remaniement et une évolution du comportement.

    Séparés, les commits se relisent et s'annulent facilement : si un test casse, on sait si la cause est la structure ou le comportement.

  • Filet de tests : de quoi s'agit-il ?

    Voir la réponse

    Ensemble de tests automatisés qui passent avant un remaniement et doivent passer après, et qui prouvent que le comportement observable n'a pas changé.

    Sans lui, on ne sait pas si l'on a cassé quelque chose. D'où la règle : pas de filet, pas de remaniement ; on commence par poser des tests.

  • Un commit s'intitule « remaniement de la facturation ». Dans son diff, on lit en plus d'un renommage la ligne -if total > 100: remplacée par +if total > 150:. Que conclure ?

    • Rien d'anormal : changer une constante reste un remaniement tant que tous les tests existants passent encore
    • Le commit est valide à condition de renommer son intitulé en « correction » dans l'historique du dépôt
    • Il suffit d'ajouter un test pour le nouveau seuil et de garder un seul commit pour tout le travail
    • Le commit change le comportement : ce seuil doit passer dans un commit séparé, présenté comme une évolution
    Voir la réponse

    Le commit change le comportement : ce seuil doit passer dans un commit séparé, présenté comme une évolution

    Un total de 120 donnait un résultat avant et un autre après : le comportement observable a bougé. Ranger le tout sous « remaniement » masque le risque à la relecture ; on sépare toujours les deux.