¿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.