Ajouter un paramètre.
Une méthode ne dispose pas de suffisamment de données pour effectuer certaines actions.
Créez un nouveau paramètre afin de transmettre les données nécessaires.
##Exemple
void charge() {
bank.transfer(amount);
}void charge(Date asOf) {
bank.transfer(amount, asOf);
}##Pourquoi refactoriser
Vous devez modifier une méthode, et ces modifications nécessitent d'ajouter des informations ou des données qui n'étaient pas disponibles auparavant pour la méthode.
L'alternative consiste à ajouter un nouveau champ privé contenant les données dont la méthode a besoin. Un paramètre est préférable lorsque ces données ne servent qu'occasionnellement ou changent fréquemment, de sorte qu'il n'y a aucun intérêt à les conserver en permanence dans l'objet. Sinon, ajoutez un champ privé et remplissez-le avec les données nécessaires avant d'appeler la méthode.
##Avantages
-
La méthode reçoit explicitement de l'appelant les données dont elle a besoin : la dépendance est visible dans sa signature au lieu d'être cachée dans l'état de l'objet.
-
Les données ponctuelles ou qui changent souvent n'ont pas à être conservées en permanence dans l'objet ; la classe ne se charge donc pas de champs qui ne servent qu'à un seul appel.
##Comment refactoriser
-
Vérifiez si la méthode est définie dans une superclasse ou une sous-classe. Si elle y est présente, vous devrez répéter toutes les étapes dans ces classes également.
-
L'étape suivante est essentielle pour maintenir votre programme fonctionnel pendant le remaniement. Créez une nouvelle méthode en copiant l'ancienne et ajoutez-y le paramètre nécessaire. Remplacez le code de l'ancienne méthode par un appel à la nouvelle méthode. Vous pouvez attribuer n'importe quelle valeur au nouveau paramètre (par exemple
nullpour les objets ou zéro pour les nombres). -
Trouvez toutes les références à l'ancienne méthode et remplacez-les par des références à la nouvelle méthode.
-
Supprimez l'ancienne méthode. La suppression n'est pas possible si l'ancienne méthode fait partie de l'interface publique. Dans ce cas, marquez l'ancienne méthode comme dépréciée (deprecated).