Addicted to refactoring support

Dank IDEA sind wir Java-Fans verwöhnt, was die Unterstützung beim Refactoring angeht. Wenn man dann mal in einer anderen Sprache programmiert (bei mir waren das in den letzten 12 Monaten z.B. C, Python und PHP), dann vermisst man diese Unterstützung mehr oder weniger schmerzlich. Programmieren macht auf einmal wieder weniger Spass, wenn man für jedes klitzekleine "Rename" mehrere Minuten investieren muss. Gibt es nur keinen generischen Ansatz, die Sprachabhaengigkeit der Refactorings herauszulösen?

Was wäre denn z.B. für ein Rename-Local-Variable-Refactoring nötig?

  • Blöcke erkennen
  • Strings erkennen
  • Trennzeichen

Die Trennzeichen sind in keiner der vorgenannten Sprachen ein Problem und auch die Strings lassen sich gut identifizieren. Problematischer sind die Blöcke in Python, während das in PHP und C auch einfach realisierbar scheint.

Was wäre denn zusätzlich nötig, um ein Rename-Method-Refactoring machen zu können?

Autsch, jetzt wird es wirklich schwer. Da spielen auf einmal mehrere Quell-Dateien eine Rolle. Leider fehlen in den genannten Sprachen die harten Vorgaben von Java was den Zusammenhang von Dateinamen und Klassennamen angeht. Zu allem Überfluss ist es in einer ungetypten Sprache auch verdammt schwer, alle Verwendungen einer Methode eindeutig zu identifizieren.

Das wuerde sich zwar alles durch (freiwillige) Konventionen regeln lassen, aber das waere doch irgendwie absurd. Im Endeffekt würden wir in jeder Programmiersprache wie in Java programmieren und die Sprachunterschiede herschenken. Wer diesen Weg verfolgen will muss sich fragen, warum er nicht gleich in Java programmiert. (Ok, es kann Gruende geben, aber das sind doch wohl eher extreme Ausnahmen.)

Welche andere Refactorings wären denn besonders hilfreich?

  • Extract Method
  • Add Parameter to Method

Einfach wird sowas nicht, aber ich sehe kein K.O.-Kriterium. Das führt gleich zum kritischen Punkt: Ich hätte sicher Spass daran, sowas zu implementieren. Wenn ich daran Spass hätte, wird es doch unter den vielen Millionen Programmierern dieser Welt noch einen anderen geben, dem das auch so geht. Mit einiger Wahrscheinlichkeit ist es sogar vor mir auf diese Idee gekommen.

Wo ist also der einfach zu bedienende Editor mit universeller Refactoring-Unterstützung? Führt uns das etwa zwangsläufig zu solchen Monstern wie vi und emacs? Wenn es nicht einfacher geht, werden viele Programmierer (die nie mit IDEA gearbeitet haben) auch in Zukunft kein Refactoring machen und die Ergebnisse ihrer Arbeit... Na ja, sie bieten viel Potential.

Für die Eclipse-Fans: Mir ist bewusst, dass es nach IDEA auch sehr gute Zweit- und Dritt-Plazierte gibt. Darunter ist zweifellos auch das kostenlose Eclipse. Aber -meiner Meinung nach- laufen diese Tools IDEA beim Refactoring einfach nur hinterher. Was die Marktdurchdringung angeht, liegt dagegen sicherlich Eclipse vorn.

Nachtrag: Es gibt tatsächlich ein Refactoring-Tool für Python: BycicleRepairMan. Angesehen habe ich es noch nicht. Die Namensgebung laesst einiges erhoffen.

Recent Assets

  • diagramm_bremspedal_verzoegerung_geschwindigkeit.jpg
  • abschnitt_im_streckenverlauf.jpg
  • zwei_traumautos.jpg
  • bild2.jpg
  • bild1.jpg

August 2009

Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

About this Entry

This page contains a single entry by Gemkow published on 2.04.04 12:44.

AJUnit anyone? was the previous entry in this blog.

Konfigurierbarkeit is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.