"Extract Method Object" aus IntelliJ auch in Eclipse?

Evil-Devil

Top Contributor
Die Java Oberfläche von Eclipse hat doch so eine Funktion. Und ist imho sogar mächtiger als die von IntelliJ.

In Eclipse musst du auch nur den Bereich markieren den du refakturieren willst und hast dann die verschiedenen Möglichkeiten wie Klasse, Methode etc.
 

xerberuz

Bekanntes Mitglied
Ich kenn das Eclipse Refactoring. Aber das bietet dieses Feature eben nicht. Oder ich versteh die bestehenden von Eclipse falsch. Ich such nicht nach refactoring generell sondern speziell nach diesem Feature.
 
S

SlaterB

Gast
hast du schon
Code markieren > rechte Maustaste > Refactor > Extract Class
ausprobiert?

würde mir selber im Leben nicht in den Sinn kommen, aber habe eben nachgeschaut,
erstellt auch eine zweite Klasse, nicht innerhalb der Datei (edit: ok, wählbar), aber immerhin,

dazu gewisse Code-Änderungen, nicht ganz wie im Link, aber schon gute Stücke auf dem Weg
 

xerberuz

Bekanntes Mitglied
hast du schon
Code markieren > rechte Maustaste > Refactor > Extract Class
ausprobiert?

würde mir selber im Leben nicht in den Sinn kommen, aber habe eben nachgeschaut,
erstellt auch eine zweite Klasse, nicht innerhalb der Datei (edit: ok, wählbar), aber immerhin,

dazu gewisse Code-Änderungen, nicht ganz wie im Link, aber schon gute Stücke auf dem Weg

Damit kann ich Felder in eine andere Klasse auslagern. Das hat nichts mit "Extract Method Object" zu tun.
 
S

SlaterB

Gast
nun, das ist Interpretationssache,
wenn ich mir den Link anschaue, dann ist ein großer Teil der Arbeit, eine separate Klasse zu erstellen, die Attribute zu übernehmen,
getter + Konstruktor zu erstellen und aufzurufen, die Attribute zurückzuholen,

all das macht 'Extract class' auch, es wird sogar in beiden Fällen die Grundrechnung c-2*a an Originalstelle beibehalten,
was im Falle Eclipse etwas verständlicher ist, denn dort fehlt als einziges die invoke()-Methode, die sicher eh noch umbenannt werden muss,
das wäre also zu ergänzen,
außerdem ggf. den Konstruktor-Aufruf in die Methode verschieben, steht bei Eclipse direkt in der Klasse

vielleicht 15% Restarbeit, erstaunlich wenig, erstaunlich gleich, dafür dass es in der Tat nicht exakt dieselbe Funktion ist,
kannst du verwenden oder nicht, bei 'hat nichts damit zu tun' bleiben..

edit: geht in Eclipse nur für Attribute, nicht lokale Variablen, das könnte ein gewichtiger Unterschied sein
("converting all the local variables to its fields" im Link)
 
Zuletzt bearbeitet von einem Moderator:

xerberuz

Bekanntes Mitglied
Es geht um die Funktionsparameter. "Extract Method object" baut direkt einen Konstruktor mit den Parametern der Methode um die es sich handelt und verschiebt den code innerhalb der Methode in die Methode der neuen Klasse. Das Beispiel ist tatsächlich unglaublich schlecht weil man nicht direkt erkennt was es tut.

Es geht nicht darum lokale Variablen oder member Variablen zu verschieben. Die Paramter der Funktion sind entscheidend.
 

Oben