Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

Añadir Parámetro.

Problema

Un método no tiene suficientes datos para realizar ciertas acciones.

Solución

Crea un nuevo parámetro para pasar los datos necesarios.

##Ejemplo

Antes
void charge() {
  bank.transfer(amount);
}
Después
void charge(Date asOf) {
  bank.transfer(amount, asOf);
}

##Por qué refactorizar

Necesitas hacer cambios en un método y estos cambios requieren añadir información o datos que antes no estaban disponibles para el método.

La alternativa es añadir un nuevo campo privado que contenga los datos que necesita el método. Un parámetro es preferible cuando los datos solo se necesitan de forma ocasional o cambian con frecuencia, de modo que no tiene sentido mantenerlos en el objeto todo el tiempo. En caso contrario, añade un campo privado y rellénalo con los datos necesarios antes de llamar al método.

##Ventajas

  • El método recibe explícitamente del llamador los datos que necesita: la dependencia queda visible en su firma en lugar de estar oculta en el estado del objeto.

  • Los datos ocasionales o que cambian con frecuencia no tienen que guardarse en el objeto todo el tiempo, así que la clase no acumula campos que solo hacen falta para una única llamada.

##Cómo refactorizar

  1. Comprueba si el método está definido en una superclase o subclase. Si el método está presente en ellas, tendrás que repetir todos los pasos también en esas clases.

  2. El siguiente paso es fundamental para mantener tu programa funcional durante el proceso de refactorización. Crea un nuevo método copiando el antiguo y añádele el parámetro necesario. Sustituye el código del método antiguo por una llamada al nuevo método. Puedes asignar cualquier valor al nuevo parámetro (como null para objetos o un cero para números).

  3. Encuentra todas las referencias al método antiguo y sustitúyelas por referencias al nuevo método.

  4. Elimina el método antiguo. La eliminación no es posible si el método antiguo forma parte de la interfaz pública. Si es así, marca el método antiguo como obsoleto (deprecated).