Risolvere un errore di ortografia in un nome di metodo

73

Uno dei metodi che uso abitualmente nel nostro codebase è errato (e mi ha preceduto).

Questo mi irrita non solo perché è mispelled ma, soprattutto, mi fa SEMPRE sbagliare il nome la prima volta che lo digito (e poi devo ricordare "Oh, giusto, dovrebbe essere mispelled a questo .. . ")

Sto apportando alcune modifiche al metodo originale. Dovrei cogliere l'occasione per rinominare semplicemente il metodo di freaking?

    
posta One Two Three 11.06.2014 - 18:53
fonte

6 risposte

136

Should I take the opportunity to just rename the freaking method?

Assolutamente.

Detto questo, se il tuo codice è stato rilasciato come API, dovresti in genere lasciare il metodo errato e inoltrarlo al metodo con il nome corretto (contrassegnandolo Obsolete se la tua lingua supporta queste cose).

    
risposta data 11.06.2014 - 19:01
fonte
52

Ci sono casi in cui dovresti evitare di fare questi refactoring:

  1. Se il metodo viene utilizzato in un'interfaccia pubblica. Un esempio canonico è l'errore ortografico di referrer in HTTP referer , l'ortografia sbagliata viene mantenuta, perché cambiare ora l'ortografia avrebbe troppe ripercussioni.

  2. Se il codice base non è coperto da alcun test. Qualsiasi refactoring dovrebbe essere eseguito sul codice testato per poter eseguire test di regressione. Refactoring del codice base che non è sotto test è particolarmente rischioso. Se hai molto tempo, inizia aggiungendo dei test; se lavori sotto la pressione del tempo, correre il rischio di introdurre bug sottili non è la cosa migliore da fare se vuoi spedire in tempo.

  3. Se il metodo potrebbe essere usato in modo insolito , il che rende praticamente impossibile trovare i suoi usi (tramite Ctrl + F o uno strumento di refactoring automatico). Ad esempio, in C #, è possibile richiamare un metodo tramite Reflection, rendendo inefficace la finestra di dialogo Rinomina di Visual Studio. In JavaScript, la funzione chiamata eval() è difficile da trovare. In PHP, le variabili variabili possono causare problemi.

  4. Se la dimensione del progetto è enorme e il metodo potrebbe essere utilizzato da altri team. Questo è simile al primo punto, ovvero l'interfaccia che fornisci ad altri team può essere considerata un'interfaccia pubblica.

  5. Se gestisci un progetto cruciale per la vita. è probabile che l'errore ortografico non sia troppo importante per giustificare alcuni mesi di pratiche burocratiche al fine di modificare il nome del metodo e garantire non causerà a nessun paziente di ricevere dieci volte la radiazione autorizzata o qualsiasi shuttle per calcolare male la sua velocità.

In qualsiasi altra situazione, sentiti libero di rinominare il metodo.

    
risposta data 11.06.2014 - 19:24
fonte
30

L'ho fatto qualche mese fa (per ragioni diverse). I passaggi che ho seguito (il linguaggio era Perl):

  1. Rinomina il metodo. Alias il vecchio nome con il nuovo nome (questo non dovrebbe infrangere alcun codice, in quanto il metodo può essere chiamato da entrambi i nomi).
  2. Informa il resto degli sviluppatori sulla modifica del nome e perché, dicendo loro di usare il nuovo nome d'ora in poi.
  3. Grep il codice di base per il vecchio nome, correggi eventuali occorrenze.
  4. Registra eventuali usi del vecchio nome (utilizzando il vecchio nome dovrebbe funzionare ancora in questo momento). Correggi quei casi.
  5. Attendi (mentre stai facendo 4.), finché nel registro non appaiono più voci.
  6. Rompere l'alias. Crea un metodo usando il vecchio nome che genera un'eccezione fatale con un messaggio sulla modifica del nome.
  7. Dopo qualche tempo, rimuovi il metodo con il vecchio nome.

    Ovviamente, il tuo chilometraggio può variare.

risposta data 12.06.2014 - 15:03
fonte
6

Un buon modo per non violare alcun codice esistente sarebbe quello di incatenare il nuovo nome del metodo al vecchio in un come

private void MyNewMethodName()
{
    TheOldMethodName();
}

e quindi contrassegna il vecchio metodo come obsoleto (se la lingua lo supporta). In questo modo, qualsiasi codice esistente funzionerà ancora e potrai gradualmente eliminare tutti i vecchi errori di ortografia dal tuo codice base. Alla fine potresti anche copiare / incollare il corpo del metodo nel nuovo metodo ed eliminare quello vecchio.

/ Modifica Come detto nel commento: Una cosa ancora migliore sarebbe spostare il codice da TheOldMethodName a MyNewMethodName e chiamare il nuovo metodo da quello vecchio. Questo avrebbe anche il vantaggio di aiutare lo sviluppatore a capire dove si trova il codice.

    
risposta data 12.06.2014 - 16:05
fonte
1

Ridenominazione del metodo:

  • Esegui il refactoring per timore di avere più lavoro da fare di quanto vuoi
  • Se l'IDE supporta il completamento automatico, utilizzalo quando fai riferimento a quel metodo

Queste sono due opzioni che potresti scegliere. Preferirei il completamento automatico (ad esempio Eclipse IDE) e non è necessario digitare il nome del metodo. Andando per il rinominare; assicurati solo di scoprire cosa chiama quel metodo e cambia i riferimenti diretti in ogni luogo. Il refactoring sarà tuo amico per questo, ma stai molto attento quando lo fai.

    
risposta data 11.06.2014 - 19:01
fonte
0

In generale raccomanderei di sì, rinominarlo.

Altre risposte qui hanno elencato buoni motivi per cui potresti non voler rinominarlo, quindi se ti trovi in una situazione del genere, puoi creare un nuovo metodo con il nome e l'implementazione corretti, e cambiare il vecchio metodo per chiamare il nuovo metodo . Quindi contrassegna il vecchio come deprecato se la tua lingua lo supporta.

    
risposta data 13.06.2014 - 20:11
fonte

Leggi altre domande sui tag