2012-02-16 16 views
14

Lavoro in un progetto Java piuttosto grande (2500+ classi) che utilizza un vecchio standard di codice in cui tutte le variabili membro sono precedute da "m_" (ad esempio m_temperature). Non c'è davvero alcun motivo per questo più a lungo e mi piacerebbe per sbarazzarsi di loro, ma:Ridenominazione di molte variabili in molte classi Java contemporaneamente

  1. Al fine di fare il cambiamento che devo fare tutte le variabili in una volta.
  2. Non deve generare alcun bug.

Il primo approccio ingenuo semplicemente rinominare tutti i "m_variable" a solo "variabile" sarà non essere sufficiente in quanto ciò potrebbe produrre conflitti di nomi tra una variabile già esistente denominato "variabile", e l'appena rinominato uno.

Quindi, per riassumere: Come rinominare tutti questi membri fastidiosi variablest senza mettersi nei guai e ci sono altri problemi rispetto a quello sopra menzionato?

sì, sono consapevole del refactoring/ridenominazione caratteristiche all'interno di IDE, si prega di tenere a mente che voglio fare le modifiche tutte le variabili che corrispondono ai criteri in una volta e non facendo clic destro su variabili e rinominandoli uno per uno.

+0

È possibile farlo utilizzando lo strumento di rifattorizzazione ide di eclissi. – Josnidhin

+0

forse vuoi dire che hai solo bisogno di specificare i criteri per esempio, prefisso con "m_" e lo "strumento" cercherà l'intero progetto per tutte le variabili globali e lo sostituirà? –

+0

Bryan: SÌ, è quello che mi piacerebbe fare. In IntelliJ ed Eclipse ecc. Si può creare uno standard di codice che l'IDE segue al momento della generazione/codice di autocompletamento ed è possibile aggiungere o rimuovere prefissi come "m_" per variabili di classe. La cosa triste è che quando si modifica lo standard di codice dato queste cose (nel mio caso rimuovendo m_ come prefisso per le variabili di classe) non si può far rispettare il codice già esistente (non in un modo che ho trovato almeno) funziona con formattazione del codice, però. – tommys

risposta

5

C'è un question su SC che è circa un refactoring massiccia in Java troppo. La migliore risposta è l'utilizzo di japvaparser e l'implementazione di un visitatore per eseguire il refactoring effettivo. Questo non dovrebbe essere tanto lavoro per un semplice rinominare.

+2

Questo suona di cosa ho bisogno, un parser con script può essere un ottimo inizio! – tommys

0

Per rispondere alla tua seconda domanda (ci sono più problemi)

  1. Vorrei evitare di variabili globali. Favore encapsulation tale da poter localizzare le funzionalità.
  2. Implementerei un po 'di unit tests in modo da poter verificare le modifiche future. Al momento sembra che il tuo unico controllo disponibile sia che il tuo progetto sia compilato correttamente.

Mi rendo conto che entrambi questi sono problemi potenzialmente considerevoli in un progetto esistente. Ma vale la pena cercare di individuare possibili punti deboli e lavorare su quelli prima di tutto.

+0

Stai certo giusto, sto giocando la vecchia scheda di codice legacy qui :) – tommys

-3

Se si utilizza l'IDE eclispe, è possibile farlo in modo semplice.

Passi:

  1. selezionare la variabile
  2. tasto destro del mouse su di esso
  3. click sul refactoring
  4. click su Rinomina

anche in netbeans è possibile seguire stessi passi . L'IDE trova il riferimento e gli usi e sostituisce tutto.

+0

Come ho detto nella mia domanda: ci sono più di 2500 classi con variabili in loro e mi piacerebbe cambiarli tutti in una volta, questo non è proprio quello che stai proponendo :) – tommys

-1

Lo strumento di rifacimento aiuterà in questo caso. Quando si rinomina una variabile, la rinominerà in tutte le posizioni dipendenti, incluso se è chiamata in un file di classe diverso. Mentre lo fa, ti avviserà nel caso in cui la tua variabile rinominata corrisponda al nome già esistente.

Tuttavia, dobbiamo farlo manualmente per ciascuna variabile.

+0

Sì, purtroppo e questo è solo un sacco di lavoro che sto cercando di evitare qui. – tommys

7

ne dite di seguito da: mass renaming of java variables

da simulante

clic sul nome della variabile.

1: premere [Alt] + [SHIFT] + [R]

2: immettere il nuovo nome.

3: premere [invio] per confermare.

-> tutte le istanze di questa variabile verranno rinominate.

+1

grazie, questo era quello che stavo cercando .. – rummykhan

+1

Utilizzando Eclipse questa è la migliore risposta che sto cercando – user7344209

Problemi correlati