È nello stato in cui è effettivamente utile e può fare più di rinomina classi?Qual è lo stato del supporto del refactore C++ in Eclipse?
risposta
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
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.
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.
Questo, e il fatto che C++ non ha una grammatica senza stato. –
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.
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.
non utilizzare macro e #if e tutto andrà bene. –