ConstructiCat Logo
CodeBust.
Browse section ▾

Introducir Objeto Parámetro.

Problem

Tus métodos contienen un grupo de parámetros que se repite.

Solution

Sustituye estos parámetros por un objeto.

##Example

Antes
Customer amountInvoicedIn(start: Date, end: Date)amountReceivedIn(start: Date, end: Date)amountOverdueIn(start: Date, end: Date)
Después
Customer amountInvoicedIn(date: DateRange)amountReceivedIn(date: DateRange)amountOverdueIn(date: DateRange)

##Why Refactor

A menudo aparecen grupos idénticos de parámetros en varios métodos. Esto provoca duplicación de código tanto de los propios parámetros como de las operaciones relacionadas. Al consolidar los parámetros en una única clase, también puedes mover allí los métodos que manejan estos datos, liberando a los demás métodos de ese código.

##Benefits

  • Código más legible. En lugar de un revoltijo de parámetros, ves un único objeto con un nombre comprensible.

  • Los grupos idénticos de parámetros dispersos aquí y allá crean su propia forma de duplicación de código: aunque no se esté llamando a código idéntico, sí se encuentran constantemente grupos idénticos de parámetros y argumentos.

##How to Refactor

  1. Crea una nueva clase que represente tu grupo de parámetros. Haz que la clase sea inmutable.

  2. En el método que quieres refactorizar, usa Añadir Parámetro, que es donde se pasará tu objeto parámetro. En todas las llamadas al método, pasa a este parámetro el objeto creado a partir de los antiguos parámetros del método.

  3. Ahora empieza a eliminar los antiguos parámetros del método uno a uno, sustituyéndolos en el código por campos del objeto parámetro. Prueba el programa después de sustituir cada parámetro.

  4. Cuando termines, comprueba si tiene sentido mover una parte del método (o, a veces, incluso el método completo) a la clase del objeto parámetro. Si es así, usa Mover Método o Extraer Método.