2009-07-20 15 views
6

Gran parte del tempo impiegato per lo sviluppo di applicazioni C++ viene sprecato nell'implementare le definizioni di classe. Con ciò intendo la prototipazione delle classi e quindi la creazione delle rispettive implementazioni.Implementazione classe automatica C++ nell'editor

Ad esempio:

#ifndef FOO_H 
#define FOO_H 

class Foo 
{ 
public: 
    Foo (const X& x, const Y& Y); 
    ~Foo(); 

    void PerformXYZ (int Count); 
}; 

#endif 

E ora dovrò copiare e incollare, quindi aggiungere il ripetitivo Foo :: su ciascuna funzione.

Foo::Foo (const X& x, const Y& Y) 
{ 

} 

Foo::~Foo() 
{ 

} 

void Foo::PerformXYZ (int Count) 
{ 

} 

Per ora copiare le dichiarazioni di funzione sopra alle rispettive file * .cpp, rimuovere righe vuote, quindi sostituire ';' con "\ n {\ n \ n} \ n". Tuttavia, devo ancora specificare lo spazio dei nomi per ogni funzione.

Esistono strumenti in Eclipse, Vim o altri IDE/editor che tolgono questo onere a uno sviluppatore?

+0

Uomo, abbiamo la stessa routine :) – GManNickG

+0

Pensi che una cosa del genere esisterebbe (sarebbe molto utile). Se nessuno trova una risposta, dovresti pensare a scrivere un plugin o un programma per farlo. – Kredns

risposta

5

In Visual Studio sono disponibili strumenti per aggiungere funzioni e variabili. Gli strumenti automatizzano il processo in questione. Ma non li uso mai :)

Nel Visual Assist X c'è lo feature che aiuta ad aggiungere l'implementazione per i metodi. È la soluzione migliore

+0

+1 Visual Assist. – peterchen

+0

Anche io trovo questi helper della GUI di uso limitato poiché riesco a scrivere il codice più velocemente di quanto non riesca a generarlo utilizzando questi strumenti. Detto questo, penso che ciò che propone il questionario sarebbe un risparmio di tempo. –

2

In Visual Studio 2008, è possibile aggiungere una classe (genererà un file .h e .cpp per l'utente) utilizzando l'opzione Progetto-> Aggiungi classe .... Ma è molto primitivo e scrive solo costruttori e distruttori. Dopo aver aggiunto la classe, puoi andare in visualizzazione classi e utilizzare l'opzione di menu 'Aggiungi metodo' per aggiungere metodi alla classe.

0

Zeus editor può essere configurato per eseguire questa operazione utilizzando la relativa funzione di modello come segue.

Fase 1: Creare unac: \ temp \ test.tpl di file che assomiglia a questo:

#ifndef $Word_H 
#define $Word_H 

class $Word 
{ 
public: 
    $Word (const X& x, const Y& Y); 
    ~$Word(); 
    void PerformXYZ (int Count); 
}; 
#endif 

$Word::$Word (const X& x, const Y& Y) 
{ 
} 

$Word::~$Word() 
{ 
} 

void $Word::PerformXYZ (int Count) 
{ 
} 

Fase 2: Utilizzando la modello, Opzioni menu per aggiungere il seguente configurazione:

$ExpandTemplate<c:\temp\test.tpl> 

Fase 3: Utilizzo delFile, Nuovo menù, digitare la parola Bar, posizionare il cursore sulla parola Bar ed eseguire il modello appena creato e si ottiene questo testo:

#ifndef Bar_H 
#define Bar_H 

class Bar 
{ 
public: 
    Bar (const X& x, const Y& Y); 
    ~Bar(); 
    void PerformXYZ (int Count); 
}; 
#endif 

Bar::Bar (const X& x, const Y& Y) 
{ 
} 

Bar::~Bar() 
{ 
} 

void Bar::PerformXYZ (int Count) 
{ 
} 
2

Come te, ho pensato a lungo il mio tempo come sviluppatore C++ è sprecato con la scrittura di noiose definizioni di classe. L'unico strumento che ho trovato finora che allevia in parte questo lavoro con il druge è VisualAssistX, come menziona uno degli altri poster.

Mentre non riescono a eliminare completamente la necessità di scrivere definizioni di classe, VA X ha alcuni buoni metodi di "refactoring" che aiutano in quest'area. Ad esempio, puoi creare una dichiarazione di metodo e creerà automaticamente un corpo di implementazione per te. Puoi anche fare cose come "Aggiungi membro simile", che riempie la finestra di dialogo "aggiungi membro" con i dati di un metodo esistente o modifica la firma di una funzione e fallo propagare automaticamente a entrambi i file cpp e h.

Non è gratuito, ma vale la pena.

Jeroen

1

Per vim, sto mantenendo this suite che fornisce frammenti di classe (che può essere facilmente adattato alle proprie esigenze).

NB: La generazione di ciascuna definizione di funzione può essere automatizzata con il comando :GOTOIMPL, ma deve essere eseguita dopo la funzione.

1

Eclipse ha sicuramente qualcosa di simile in questo menu di refactoring sebbene non l'abbia usato per un anno e non ricordi alcun dettaglio specifico.

Problemi correlati