Supprimer la méthode d'affectation.
Problème
La valeur d'un champ ne doit être définie qu'au moment de sa création et ne doit jamais changer par la suite.
Solution
Supprimez donc les méthodes qui modifient la valeur du champ.
##Exemple
Avant
class Account {
private String id;
Account(String id) {
setId(id);
}
void setId(String arg) {
id = arg;
}
}Après
class Account {
private final String id;
Account(String id) {
this.id = id;
}
}##Pourquoi refactoriser
Vous souhaitez empêcher toute modification de la valeur d'un champ.
##Comment refactoriser
-
La valeur d'un champ ne doit pouvoir être modifiée que dans le constructeur. Si le constructeur ne contient pas de paramètre permettant de définir la valeur, ajoutez-en un.
-
Recherchez tous les appels aux setters.
-
Si un appel à un setter se trouve juste après un appel au constructeur de la classe courante, déplacez son argument vers l'appel du constructeur et supprimez le setter.
-
Remplacez les appels aux setters dans le constructeur par un accès direct au champ.
-
-
Supprimez le setter.