Logo ConstructiCat
CodeBust.
Parcourir la section ▾

Préserver l'objet entier.

Problème

Vous récupérez plusieurs valeurs d'un objet, puis vous les passez comme paramètres à une méthode.

Solution

Essayez plutôt de passer l'objet entier.

##Exemple

Avant
int low = daysTempRange.getLow();
int high = daysTempRange.getHigh();
boolean withinPlan = plan.withinRange(low, high);
Après
boolean withinPlan = plan.withinRange(daysTempRange);

##Pourquoi refactoriser

Le problème est qu'avant chaque appel de votre méthode, il faut appeler les méthodes du futur objet paramètre. Si ces méthodes ou la quantité de données obtenue pour la méthode changent, vous devrez retrouver soigneusement une douzaine de tels endroits dans le programme et y appliquer ces modifications dans chacun d'eux.

Une fois cette technique de remaniement appliquée, le code permettant d'obtenir toutes les données nécessaires sera rassemblé à un seul endroit — la méthode elle-même.

##Avantages

  • Au lieu d'un fouillis de paramètres, vous voyez un objet unique doté d'un nom compréhensible.

  • Si la méthode a besoin de davantage de données issues d'un objet, vous n'aurez pas à réécrire tous les endroits où la méthode est utilisée — seulement l'intérieur de la méthode elle-même.

##Comment refactoriser

  1. Créez dans la méthode un paramètre pour l'objet à partir duquel vous pouvez obtenir les valeurs nécessaires.

  2. Commencez maintenant à retirer un à un les anciens paramètres de la méthode, en les remplaçant par des appels aux méthodes correspondantes de l'objet paramètre. Testez le programme après chaque remplacement de paramètre.

  3. Supprimez le code des accesseurs (getters) de l'objet paramètre qui précédait l'appel de la méthode.