Wie nennt man den Prozess, einen Teil einer Funktion zu übernehmen und daraus eine individuelle Funktion zu machen?

8

Ich weiß, dass es dafür einen Fachbegriff gab . Ich kann mich einfach nicht erinnern, was es war.

Wenn der Titel geklärt werden muss, meine ich Folgendes: Wenn dies der alte Code ist:

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

und es wurde geändert in:

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
}
Bitmaske
quelle
Ich hätte es "Aufräumen" genannt. Ich kann nicht glauben, dass jemand beschlossen hat, dies etwas Besonderes zu nennen. Er muss Füllstoff für sein Buch benötigt haben.
James
@ James: 'Aufräumen' ist viel allgemeiner. Es ist sinnvoll, Dinge anzugeben, über die Sie häufig sprechen müssen, damit Sie effizienter darüber sprechen können. Das ist der einzige Grund für Muster.
Bitmaske

Antworten:

21

Fachbegriff hierfür ist Extraktmethode

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

Verwandeln Sie das Fragment in eine Methode, deren Name den Zweck der Methode erklärt.

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
quelle
5
Extraktion - das war's!
Bitmaske
Methode extrahieren. Sie sollten Design Patterns überprüfen .
Larry Hector
9
@ LarryHector: Ich bin nicht sicher, ob es sich um (GoF) Design Patterns handelt . Dort gibt es eine Art Template-Methode, die ein bisschen ähnlich ist, und natürlich ist DP eine grundlegende Lektüre, aber die Extraktionsmethode sowie viele andere Refactorings sind tatsächlich in anderen Literaturstellen enthalten, und das ist Martin Fowlers Refactoring .
Herby
1
@herby: Sie haben Recht, es ist in Fowlers Refactoring definiert , danke für die Korrektur. Es gibt auch einen guten Abschnitt über das Wie / Warum vieler Refactoring-Methoden in Michael Feathers ' Working with Legacy Code .
Larry Hector
8

Der Prozess selbst wird als Refactoring des Codes bezeichnet, und die Methode wird als Extraktionsmethode bezeichnet. Sie passt gut zur Anwendung von SRP (Single Responsibility-Prinzip) auf den Code.

Yusubov
quelle
Ist "Refacturing" ein Tippfehler? (ehrliche Frage!)
Bitmaske
@bitmask Es ist höchstwahrscheinlich
marktani
Ja, es ist ein Tippfehler, wie es aus den Links hervorgeht, es sollte "Refactoring" sein
Yusubov
5
Refactoring ist weniger spezifisch. Die Extraktionsmethode ist eine von vielen, vielen Arten des Refactorings. Und keiner von beiden ist implizit mit SRP verwandt, obwohl dies einer der vielen Gründe ist, warum Sie möglicherweise eine Umgestaltung vornehmen möchten.
pdr