Supprimer les affectations aux paramètres.
Une valeur est affectée à un paramètre à l'intérieur du corps d'une méthode.
Utilisez une variable locale au lieu d'un paramètre.
##Example
int discount(int inputVal, int quantity) {
if (quantity > 50) {
inputVal -= 2;
}
// ...
}int discount(int inputVal, int quantity) {
int result = inputVal;
if (quantity > 50) {
result -= 2;
}
// ...
}##Why Refactor
Les raisons de cette refactorisation sont les mêmes que pour Diviser une variable temporaire, mais dans ce cas nous avons affaire à un paramètre et non à une variable locale.
Premièrement, si un paramètre est passé par référence, alors une fois la valeur du paramètre modifiée à l'intérieur de la méthode, cette valeur est transmise à l'argument qui a demandé l'appel de cette méthode. Très souvent, cela se produit accidentellement et entraîne des effets fâcheux. Même si, dans votre langage de programmation, les paramètres sont généralement passés par valeur (et non par référence), cette particularité de codage peut désorienter ceux qui n'y sont pas habitués.
Deuxièmement, l'affectation multiple de valeurs différentes à un même paramètre rend difficile de savoir quelles données le paramètre est censé contenir à un instant donné. Le problème s'aggrave si votre paramètre et son contenu sont documentés alors que la valeur réelle peut différer de ce qui est attendu à l'intérieur de la méthode.
##Benefits
-
Chaque élément du programme ne devrait être responsable que d'une seule chose. Cela facilite grandement la maintenance du code par la suite, car vous pouvez remplacer du code en toute sécurité, sans effets de bord.
-
Cette refactorisation aide à extraire le code répétitif dans des méthodes distinctes.
##How to Refactor
-
Créez une variable locale et affectez-lui la valeur initiale de votre paramètre.
-
Dans tout le code de la méthode qui suit cette ligne, remplacez le paramètre par votre nouvelle variable locale.