Como você chama o processo de participar de uma função e fazer dela uma função individual?

8

Eu sei que havia um termo técnico para isso. Só não consigo lembrar o que era.

Se o título precisar de esclarecimentos, eis o que quero dizer; Se este for o código antigo:

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

e mudou para:

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
}
bitmask
fonte
Eu chamaria isso de 'Arrumar'. Não acredito que alguém decidiu chamar isso de algo especial, eles devem ter precisado de preenchimento para o seu livro.
James
@ James: 'arrumar' é muito mais genérico. Faz sentido fornecer coisas sobre as quais você precisa falar com frequência, para que você possa falar sobre eles com mais eficiência. Essa é a única razão para padrões.
bitmask

Respostas:

21

O termo técnico para isso é Método de extração

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

Transforme o fragmento em um método cujo nome explica a finalidade do 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);
}
Herby
fonte
5
extração - é isso!
bitmask
Método de extração. Você deve verificar Design Patterns .
Larry Hector
9
@LarryHector: Não tenho certeza de que é (GoF) Design Patterns . Existe uma coisa chamada Modelo de Método que é um pouco semelhante e, é claro, o DP é uma leitura fundamental, mas o Método de Extração, bem como muitas outras refatorações, estão de fato em outra peça de literatura e essa é a Refatoração de Martin Fowler .
precisa
1
@herby: Você está correto, é definido na refatoração de Fowler , obrigado pela correção. Há também uma boa seção sobre como / por que muitos dos métodos de refatoração em Trabalhando com Código Legado, de Michael Feathers .
Larry Hector
8

O processo em si é chamado de refatoração do código, e o método é chamado de método de extração , e é uma boa combinação para aplicar SRP (princípio de responsabilidade única) ao código.

Yusubov
fonte
"Refatorar" é um erro de digitação? (pergunta honesta!)
bitmask
@bitmask Provavelmente é #
marktani
Sim, é um erro de digitação, como pode parecer a partir dos links, que se destinava a ser "refatoração"
Yusubov
5
A refatoração é menos específica. Método de extração é um dos muitos tipos de refatoração. E nenhum deles está implicitamente relacionado ao SRP, embora essa seja uma das muitas razões pelas quais você pode refatorar.
PDR