È giustificato utilizzare funzioni e nomi di variabili univoci a livello di progetto per aiutare il futuro refactoring?

1

Gli strumenti di refactoring (come ReSharper) spesso non possono essere certi di rinominare un dato identificatore quando, ad esempio, si refactoring una funzione JavaScript. Immagino che questa sia una conseguenza della natura dinamica di JavaScript.

ReSharper risolve questo problema offrendo anche la possibilità di rinominare corrispondenze lessicali ragionevoli. Lo sviluppatore può rinunciare a rinominare alcune funzioni, se scopre che la corrispondenza lessicale è puramente casuale. Ciò significa che lo sviluppatore deve approvare ogni istanza che sarà interessata dalla ridenominazione.

Ad esempio, consideriamo due classi Backbone che sono completamente indipendenti l'una dall'altra nella nostra applicazione:

var Header = Backbone.View.extend({
    close: function() {...}
})

var Dialog = Backbone.View.extend({
    close: function() {...}
})

Se provi a rinominare il Dialog metodo close per esempio closeAndNotify , allora ReSharper offrirà di rinominare tutte le occorrenze del metodo Header close solo perché sono le stesse lessicalmente precedenti alla rinomina.

Per evitare questo problema, considera questo:

var Header = Backbone.View.extend({
    closeHeader: function() {...}
})

var Dialog = Backbone.View.extend({
    closeDialog: function() {...}
})

Ora puoi rinominare closeDialog senza ambiguità - dato che non ci sono altre classi che hanno un metodo con lo stesso nome.

Vale la pena di nominare le mie funzioni in questo modo per aiutare il futuro refactoring?

    
posta kahoon 06.12.2012 - 21:01
fonte

1 risposta

2

Is it justified to use overly long function or variable names to help future refactoring?

"troppo lungo" implica che i nomi siano too lunghi, ma la situazione che descrivi mi fa pensare che parte del problema è che nomi come close non sono abbastanza lunghi, o più correttamente , abbastanza specifico. I nomi lunghi sono utili non solo agli strumenti automatici, ma agli umani che devono lavorare con loro. Suggerirei di scegliere nomi che siano informativi.

È, naturalmente, possibile andare troppo lontano. Se insisti sul fatto che ogni nome è unico in tutto il progetto, creerai un mal di testa solo per quanto riguarda il tentativo di gestire tutti quei nomi. Suggerirei di usare nomi sufficientemente descrittivi da poterli facilmente comprendere. A volte potresti dover rivedere le modifiche manualmente, ma se il nome in questione è descrittivo non avrai difficoltà a decidere se una modifica è appropriata.

    
risposta data 06.12.2012 - 21:13
fonte

Leggi altre domande sui tag