2008-09-25 17 views

risposta

22

CDT (C/C Strumenti ++ Development - Eclipse progetto) 5.0 ha un sacco di nuove refactoring

* 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 

C'è un refactoring CDT wiki

0

Sì, e la maggior parte di loro non funzionano in realtà se il codice è troppo complicato. Cose come spostare un metodo, rinominare, ecc. Hanno problemi a volte.

+0

non utilizzare macro e #if e tutto andrà bene. –

0

C++ è un linguaggio molto difficile per fornire supporto per il refactoring. Questo perché la lingua è molto complessa e difficile da analizzare ma è principalmente a causa del preprocessore.

Il preprocessore è il motivo principale per cui gli IDE C/C++ sono in ritardo rispetto ad altre lingue.

+0

Questo, e il fatto che C++ non ha una grammatica senza stato. –

2

Ci sono stati numerosi sforzi per fornire strumenti di refactoring per C++, la maggior parte di essi è fallita molto presto, perché la creazione di tali strumenti richiede la piena capacità di elaborare il codice sorgente C++, cioè è necessario un compilatore C++ funzionante e completo nel primo posto per implementare anche le forme più basilari di trasformazioni automatiche da sorgente a fonte.

Fortunatamente, con l'introduzione di plugins into gcc, è finalmente prevedibile che gli sforzi correlati possano effettivamente essere in grado di sfruttare un compilatore C++ esistente per questo scopo, invece di dover ricorrere alle proprie implementazioni di un compilatore C++.

Per una discussione più approfondita, si consiglia di controllare this.

Per il momento, il candidato più promettente per fornire supporto per il refactoring C++ ampiamente automatizzato, è certamente il progetto Mozilla pork, insieme al relativo progetto associato Dehydra.

1

Alcuni refactoring C++ supportati, ad esempio, da Ref ++ non hanno bisogno di comprendere completamente la sintassi C++. Ad esempio, il metodo pull up, il metodo push down ecc. Sono piuttosto semplici. Per qualche motivo questo tipo di refactoring non è implementato per i refactoring CDT.

Problemi correlati