¿Cómo se llama el proceso de tomar parte de una función y convertirla en una función individual?


8

Sé que había un término técnico para esto. No puedo recordar de qué se trataba.

Si el título necesita aclaración, esto es lo que quiero decir; Si este es el código anterior:

Result foobar(Param1,Param2,Param3) {
  code that does abc
  code that does xyz
  code that does asdf
  more code that does something
}

y se cambia a:

SomeResult do_xyz(SomeParams) {
  code that does xyz
}
Result foobar() {
  code that does abc
  do_xyz(args);
  code that does asdf
  more code that does something
}

Lo habría llamado 'ordenar'. No puedo creer que alguien haya decidido llamar a esto algo especial, deben haber necesitado relleno para su libro.
James

@James: 'ordenar' es mucho más genérico. Tiene sentido dar cosas de las que necesita hablar a menudo nombres, para que pueda hablar de ellas de manera más eficiente. Esa es la única razón de los patrones.
bitmask el

Respuestas:


21

El término técnico para esto es Método de extracción

Ver http://www.refactoring.com/catalog/extractMethod.html

Convierta el fragmento en un método cuyo nombre explique el propósito del método.

void printOwing() {
    printBanner();

    //print details
    System.out.println ("name:    " + _name);
    System.out.println ("amount    " + getOutstanding());
}

                                                                                                         http://www.refactoring.com/catalog/arrow.gif

void printOwing() {
    printBanner();
    printDetails(getOutstanding());
}

void printDetails (double outstanding) {
    System.out.println ("name:    " + _name);
    System.out.println ("amount    " + outstanding);
}

55
extracción - eso es todo!
bitmask el

Método de extracción Deberías consultar Patrones de diseño .
Larry Hector

99
@LarryHector: No estoy seguro de que sean patrones de diseño (GoF) . Hay algo llamado Método de plantilla allí que es un poco similar, y por supuesto, DP es una lectura fundamental, pero el Método de extracción, así como muchas otras refactorizaciones, se encuentran en otra literatura y esa es la Refactorización de Martin Fowler .
herby

1
@herby: Tienes razón, está definido en Refactorización de Fowler , gracias por la corrección. También hay una buena sección sobre cómo / por qué muchos de los métodos de refactorización en Michael Feathers ' Working with Legacy Code .
Larry Hector

8

El proceso en sí se llama Refactorización del código, y el método se llama Método de extracción , y es una buena combinación para aplicar SRP (principio de responsabilidad única) al código.


¿Es "Refacturing" un error tipográfico? (¡pregunta honesta!)
bitmask el

@bitmask Probablemente sea
marktani

Sí, es un error tipográfico, como puede parecer por los enlaces, estaba destinado a ser "Refactorización"
Yusubov

55
La refactorización es menos específica. El método de extracción es uno de los muchos tipos de refactorización. Y ninguno de los dos está implícitamente relacionado con SRP, aunque esa es una de las muchas razones por las que es posible que desee refactorizar.
pdr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.