Refactorer à fond les manettes



Gaspard POINTEAU

les Sponsors d'Alpes Craft 2025 : Kaizen solution, Applied Materials, Julien Lenormand, Bonitasoft, Tuleap

Gaspard POINTEAU

je suis un expert en ergonomie
  • Dev back
  • JVM (Java, Kotlin) mais pas que
  • Les individus et leurs interactions plus que les processus et les outils.
  • Pratiques crafts, TDD
  • travaille avec des Trains (SNCF, pas SaFe)

https://www.linkedin.com/in/gaspard-pointeau/

Ardèch Drôme Dev
QR Code ADD

Formation

  • TDD
  • Refacto de code legacy
  • Agilité (canal historique : XP, manifesto)
  • Scrum

  • Craft : tout ce qui est au-dessus !


Certification Qualiopi : financé par OPCO

La manette

manette de playstation Dual Shock

Antimicro / AntimicroX

capture d'écran du logiciel Antimicro https://github.com/AntiMicroX/antimicrox

Mapping :

Mapping 1 : flêches directionnelles, Echap et Entrée.

Gilded Rose

https://github.com/emilybache/GildedRose-Refactoring-Kata

capture d'écran de la liste des languages possibles pour le gilded Rose capture d'écran de la liste des languages possibles pour le gilded Rose

Gestion d'un hôtel des ventes de WoW.

Les objets ont une qualité (prix) qui est recalculée chaque jour.

Des règles spécifiques selon le nom de l'objet et leur date de péremption (sellIn).

Mapping 2 : Ctrl, tab, shift.

switcher : ctrl + tab

hide : shift + echap

change tab : alt + flèche

Tests

Tests automatiques sur IntelliJ :

Les tests sont relancés automatiquement à chaque modification d'un fichier.

Capture d'écran du bouton de tests automatiques.

Golden Master Test

Le système est une boite noire, on vérifie que pour les mêmes entrées on a toujours les mêmes sorties

inputs goes to black-box, ouput goes

Approvals

Sérialiser les objets, ou rediriger les sorties pour avoir du texte facile à comparer

Générer les combinaisons possibles d'entrées.

https://github.com/approvals

Mutation :
tester le test

TDD : Red, Green, Refactor

Vérifier que les tests attrapent les bugs

Partie Rouge du TDD

Outils de mutation testing, ou à la main

Historique

Ctrl +Z, commit et git, historique local ...

Permettre de tester des trucs sans risques et revenir à un état stable

Historique Local

capture d'écran d'un historique local sous intellij
Mapping 3 : Z, suppr.

annuler : ctrl + Z

Refacto

Mapping 4 : Alt, F6, C, V.

Alt-Entrée : quick fix

ctrl + alt + C : extract constant

ctrl + alt + V : extract variable

ctrl + alt + M : extract Méthode

ctrl + alt + N : Inline

F6 : Move, escalate

shift + F6 : rename

Utiliser les warning de l'IDE

Extraire des tout petits morceaux,

Partir du plus imbriqué

Duplication, méthodes

Faire apparaitre la duplication

Rendre la méthode cohérente d'un point de vue métier

Déplacer au bon endroit

Écrire des tests unitaires qui définissent le fonctionnel

capture d'écran des tests unitaires de l'Item

Flow of control

Rendre l'ordre cohérent : mettre ensemble les tests de même catégorie

Ne pas avoir peur de dupliquer pour supprimer les mauvaises généralisations

Faire apparaitre le vide pour expliciter

ctrl + alt + L : reformat le code

Polymorphisme

alt + inser : Generate (override, constructor ...)

ctrl + alt + N : Inline

Remplacer des tests sur un type
par de l'héritage.

diagramme de classe, Item en classe mère, Sulfuras, Aged Brie et Passes en classe héritées

Ctrl + Alt + Shift + U : générer le diagramme

Babystep :
par toutes petites étapes

Commencer par un objet vide et overrider les méthodes une par une.

Faire objet par objet

Penser (encore) aux tests unitaires pour écrire des specs

capture d'écran des tests unitaires de Aged Brie

Ajout de nouvelle fonctionnalité

Du TDD pour décrire le besoin.

Décrire précisemment, avec les types et les paramètres.

Génération automatique

On résume le refacto :

Tests de non-régression fiables

Tests Automatiques

Babysteps

Du plus imbriqué au plus général

Faire apparaitre la duplication explicitement

Les boutons nécessaires :

Mapping 4 : total.

Limitations de la manette :

Impossible de faire notre vrai travail :

Faire apparaitre la connaissance métier via le namming et les tests

Shift Shift :
Search Everywhere

Plein de Katas :

99 Bottles of OOP :

https://github.com/GaspardPO/talks

Diapos

https://openfeedback.io/ZGGIopadnhAPmQMbrzDm/0/3N9TM4V8SVWiyLTp0b1m

Feedback

https://github.com/GaspardPO/talks