2008-09-25 8 views

Antwort

22

CDT (C/C++ Entwicklungstools - Eclipse-Projekt) 5.0 hat eine Reihe von neuen Refactorings

* Declare Method 
* Extract Baseclass 
* Extract Constant 
* Extract Method 
* Extract Subclass 
* Hide Method 
* Implement Method 
* Move Field/Method 
* Replace Number 
* Separate Class 
* Generate Getters and Setters 

Es gibt eine CDT Refactoring wiki

0

Ja, und die meisten von ihnen arbeiten nicht wirklich, wenn Der Code ist zu kompliziert. Dinge wie Verschieben einer Methode, Umbenennen usw. haben manchmal Probleme.

+0

Verwenden Sie keine Makros und #if und alles wird gut. –

0

C++ ist eine sehr harte Sprache, die Refactoring-Unterstützung bietet. Dies liegt daran, dass die Sprache sehr komplex und schwer zu analysieren ist, aber hauptsächlich wegen des Präprozessors.

Der Präprozessor ist der Hauptgrund, warum C/C++ IDEs hinter anderen Sprachen zurückbleiben.

+0

Das und die Tatsache, dass C++ keine staatenlose Grammatik hat. –

2

Es gab zahlreiche Bemühungen, Refactoring-Tools für C++ bereitzustellen, die meisten von ihnen scheiterten ziemlich früh, weil die Erstellung solcher Tools die volle Fähigkeit zur Verarbeitung von C++ - Quellcode erfordert, dh Sie benötigen einen funktionierenden und vollständigen C++ - Compiler erster Ort, um selbst die grundlegendsten Formen automatisierter Quell-zu-Quell-Transformationen zu implementieren.

Glücklicherweise ist es mit der Einführung von plugins into gcc endlich absehbar, dass verwandte Bemühungen tatsächlich in der Lage sind, einen vorhandenen C++ - Compiler für diesen Zweck zu nutzen, anstatt auf ihre eigenen Implementierungen eines C++ - Compilers zurückgreifen zu müssen.

Für eine ausführlichere Diskussion, möchten Sie vielleicht this auschecken.

Derzeit ist der vielversprechendste Kandidat für eine weitgehend automatisierte C++ - Refactoring-Unterstützung sicherlich das Projekt Mozilla pork, zusammen mit dem zugehörigen Companion-Projekt Dehydra.

1

Einige C++ - Refactorings, die z. B. von Ref ++ unterstützt werden, müssen die C++ - Syntax nicht vollständig verstehen. Zum Beispiel Pull-Up-Methode, Push-Down-Methode usw. sind ziemlich einfach. Aus irgendeinem Grund werden solche Refactorings nicht in CDT-Refactorings implementiert.

Verwandte Themen