Nadia & Renaud Humbert-Labeaumaz
Un caprice de développeur.
« Le refactoring est l'acte d’améliorer le design du code sans changer son comportement. »
M. Feathers
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);
}
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);
}
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);
}
Préparation nécessaire
Refactoring minimal pour rendre testable.
Création d'un harnais de tests.
Inversion de la dette technique.
Les développeurs (re)prennent du plaisir.
@nphumbert (nphumbert.github.io)
Crafties @ YouTube
@rnowif (rnowif.github.io)