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?