# "Extract Method Object" aus IntelliJ auch in Eclipse?



## xerberuz (7. Feb 2013)

Hi,

gibt es das Refactoring Feature Extract Method Object auch für Eclipse? Kennt jemand ein Plugin das soetwas anbietet?


----------



## Evil-Devil (7. Feb 2013)

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 (7. Feb 2013)

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.


----------



## SlaterB (7. Feb 2013)

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 (7. Feb 2013)

SlaterB hat gesagt.:


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



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


----------



## SlaterB (7. Feb 2013)

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)


----------



## xerberuz (7. Feb 2013)

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.


----------

