Logo ConstructiCat
CodeBust.
Parcourir la section ▾

Ajouter un paramètre.

Problème

Une méthode ne dispose pas de suffisamment de données pour effectuer certaines actions.

Solution

Créez un nouveau paramètre afin de transmettre les données nécessaires.

##Exemple

Avant
void charge() {
  bank.transfer(amount);
}
Après
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

  1. 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.

  2. 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 null pour les objets ou zéro pour les nombres).

  3. Trouvez toutes les références à l'ancienne méthode et remplacez-les par des références à la nouvelle méthode.

  4. 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).