ConstructiCat Logo
CodeBust.
Browse section ▾

Introduire un objet paramètre.

Problem

Vos méthodes contiennent un groupe de paramètres qui se répète.

Solution

Remplacez ces paramètres par un objet.

##Example

Avant
Customer amountInvoicedIn(start: Date, end: Date)amountReceivedIn(start: Date, end: Date)amountOverdueIn(start: Date, end: Date)
Après
Customer amountInvoicedIn(date: DateRange)amountReceivedIn(date: DateRange)amountOverdueIn(date: DateRange)

##Why Refactor

On rencontre souvent des groupes de paramètres identiques dans plusieurs méthodes. Cela entraîne une duplication de code, à la fois des paramètres eux-mêmes et des opérations qui leur sont associées. En regroupant les paramètres dans une seule classe, vous pouvez aussi y déplacer les méthodes qui traitent ces données, libérant ainsi les autres méthodes de ce code.

##Benefits

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

  • Des groupes de paramètres identiques disséminés çà et là constituent une forme de duplication de code à part entière : même si aucun code identique n'est appelé, on retrouve constamment des groupes identiques de paramètres et d'arguments.

##How to Refactor

  1. Créez une nouvelle classe qui représentera votre groupe de paramètres. Rendez cette classe immuable.

  2. Dans la méthode que vous voulez remanier, utilisez Ajouter un paramètre, par lequel votre objet paramètre sera passé. Dans tous les appels de la méthode, passez à ce paramètre l'objet créé à partir des anciens paramètres de la méthode.

  3. Commencez maintenant à supprimer un à un les anciens paramètres de la méthode, en les remplaçant dans le code par les champs de l'objet paramètre. Testez le programme après chaque remplacement de paramètre.

  4. Une fois terminé, demandez-vous s'il est pertinent de déplacer une partie de la méthode (voire parfois la méthode entière) dans la classe de l'objet paramètre. Si c'est le cas, utilisez Déplacer la méthode ou Extraire la méthode.