2009-07-22 6 views
5

Dopo aver ricevuto spesso la raccomandazione di non utilizzare caratteri di sottolineatura iniziali e doppi in identificativi C/C++, ho deciso di risolvere tutte le nostre fonti una volta per tutte. Quello che devo fare ora è convertire _Identifier in Identifier_.Come aggiornare tutti i nomi di identificatore C/C++ in un progetto

Devo utilizzare uno strumento specializzato per questo compito che le espressioni regolari faranno per questo lavoro? In quest'ultimo caso, qual è il modello che corrisponde all'identificatore C/C++?

risposta

13

Sebbene io sia uno di quelli che spesso sottolinea che i nomi con trattini bassi di sottolineatura possono essere riservati, raccomando vivamente di non farlo a meno che non si verifichino problemi causati dai nomi. Fare questo cambiamento globale renderà il tuo sistema di controllo della versione meno utile di quanto potrebbe altrimenti causando ogni tipo di diff spuri. Inoltre, c'è la possibilità di creare nomi duplicati.

Inoltre, ci sono molti nomi prefissi di sottolineatura che sono perfettamente validi. Si pensa immediatamente a __LINE__ e __FILE__ ecc. E a tutti i nomi di funzioni non standard che possono essere fornite da l'implementazione specifica. Filtrare quei nomi sarà tutt'altro che banale (direi quasi impossibile), certamente un semplice script Perl o sed non sarà sufficiente.

Quindi, invece, ti incoraggio a cambiare i nomi su file per file mentre apporti altre modifiche al codice. Cambia i tuoi standard di programmazione per evitare i principali nomi di sottolineatura e scrivi un nuovo codice in conformità con gli standard.

+0

Sono davvero d'accordo. Dove il trattino basso non è così importante. –

+4

Se il rilevamento del problema, tuttavia, solleva un errore (a bassa priorità) sulla denominazione e quando si aggiorna un file si effettuano due check-in: uno per correggere i nomi e uno per apportare altre modifiche. I check-in come "fatto un cambio di linea, e anche modificato 200 righe per correggere i nomi" hanno diffs davvero inutili. –

+0

Sono d'accordo anch'io. Non cercare di aggiustare qualcosa che non sia rotto. So che il codice a volte può sembrare terribile. I miei progetti sono pieni di cose del genere. Ma ti ci abituerai. – TalkingCode

0

Se i test di regressione sono solidi, non dovresti avere problemi se scrivi semplicemente uno script perl rapido per sostituire tutto ed eseguire la suite di test. Se non si hanno test di regressione solidi ... beh, allora si può fare la sostituzione di script perl e ricostruire semplicemente il codice. Se la compilazione funziona, allora è probabile che tutto vada bene. In altre parole, prova la soluzione rapida e usa solo uno strumento specializzato se questo non funziona.

7

Se si utilizza Visual Studio, ci sono refactoring di plugin come Visual Assist X per aiutarti.

7

Perl dovrebbe fare il lavoro, ma c'è Coccinelle per quando diventa complicato.

1

Netbeans può eseguire questa operazione per l'intero progetto, utilizzando il comando di menu Refactor-> Rinomina. Ma funziona solo per un singolo identificatore per volta, quindi dovrai reiterare per ogni identificatore che devi modificare.

Problemi correlati