Refactorer c’est comme dormir
Nadia & Renaud Humbert-Labeaumaz
« Pas le temps de refactorer, il faut produire. »
Perceptions du refactoring
-
Le refactoring est souvent vu comme
- Une perte de temps.
- Sans valeur ajoutée.
Un caprice de développeur.
- Cette présentation vise à montrer que le refactoring est bon pour la santé.
« Se priver de refactoring, c’est comme se priver de sommeil. »
Conséquences
- La moindre tâche prend du temps.
- Des erreurs étranges surviennent.
- Cela s'impose au bout du compte.
- La journée est très longue !
Que signifie refactorer ?
« Le refactoring est l'acte d’améliorer le design du code sans changer son comportement. »
M. Feathers
Renommer une méthode
public BigDecimal calc() {
return bks.stream()
.map(Book::price)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
}
public BigDecimal computeTotalPrice() {
return books.stream()
.map(Book::price)
.reduce(BigDecimal::add)
.orElse(BigDecimal.ZERO);
}
Extraire une interface
public User createUser(String name, String password) {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hashedPassword = md.digest(password.getBytes("UTF-8"));
User user = new User(name, hashedPassword);
return userRepository.save(user);
}
public User createUser(String name, String password) {
byte[] hashedPassword = hashProvider.hash(password);
User user = new User(name, hashedPassword);
return userRepository.save(user);
}
Regrouper des attributs de méthode dans un objet
public User createUser(String firstName, String lastName,
String password, String email, String phone) {
User user = new User(firstName, lastName,
hashProvider.hash(password), email, phone);
return userRepository.save(user);
}
public User createUser(UserInfos infos) {
User user = new User(infos, hashProvider);
return userRepository.save(user);
}
Ajouter des tests
-
Premier pas vers un meilleur design
- Étape nécessaire à du refactoring.
- Améliore la compréhension du code.
- Alerte si le code n'est pas testable.
En pratique
- Refactorer avant chaque développement.
-
Seulement sur le code concerné
- Impossible de tout corriger d'un coup.
- Évite les régressions non liées.
-
Préparation nécessaire
-
Refactoring minimal pour rendre testable.
-
Création d'un harnais de tests.
-
Conclusion
-
Règle du boy scout
- Laisser le code dans un meilleur état.
-
Amélioration continue du code
-
Inversion de la dette technique.
-
-
Les développeurs (re)prennent du plaisir.
Merci
@nphumbert (nphumbert.github.io)
Crafties @ YouTube
@rnowif (rnowif.github.io)
Refactorer c'est comme dormir
By Nadia Humbert-Labeaumaz
Refactorer c'est comme dormir
- 1,480