Le 7 regole del Javascript non intrusivo

di: Christian Heilmann     27 Dicembre 2007

Si può accedere alle proprietà pubbliche e ai metodi che sono restituiti allo stesso modo in cui si fa con un letterale di oggetto, in questo caso myScript.public() e myScript.foo. C'è però un'altra cosa fastidiosa: se si vuole accedere ad un metodo pubblico da un altro o da un metodo privato, è necessario ricorrere nuovamente ai lunghi nomi (il nome dell'oggetto principale può in effetti diventare molto lungo). Per evitare tutto ciò basta definirli come metodi privati e restituire solo un oggetto con sinonimi:

var myScript = function(){
// these are all private methods and properties
var nav = document.getElementById('nav');
function init(){
// do stuff
}
function show(){
// do stuff
// do stuff
}
function reset(){
// do stuff
}
var foo = 'bar';
function public(){

}
// return public pointers to the private methods and
// properties you want to reveal
return {
public:public,
foo:foo
}
}();

Ciò consente di avere una certa consistenza nella scrittura del codice e permette anche di scrivere sinonimi più corti quando vengono rivelati.

Se non si vuole rivelare nessun metodo o nessuna proprietà al mondo esterno, si può avvolgere tutto il blocco di codice in una funzione anonima e richiamarla subito dopo che è stata definita:

(function(){
// these are all private methods and properties
var nav = document.getElementById('nav');
function init(){
// do stuff
show(); // no need for prepended object name
}
function show(){
// do stuff
}
function reset(){
// do stuff
}
})();

Questo è un grande pattern per una funzionalità che deve essere eseguita solo una volta e non ha dipendenze su altre funzioni.

Seguendo questi consigli il nostro codice funzionerà bene per gli utenti, per la macchina su cui viene eseguito, per gli altri sviluppatori. C'è tuttavia un altro gruppo di cui tenere conto.

7. Lavorare per il prossimo sviluppatore

L'ultimo passo per rendere gli script realmente non intrusivi è pensare allo sviluppatore che dopo di noi dovrà prendersi carico della sua gestione. Dobbiamo prendere in considerazione tali questioni:

  • I nomi delle variabili e delle funzioni sono tutti logici e facili da capire?
  • Il codice è strutturato logicamente? Si può "leggerlo" dall'inizio alla fine?
  • Le dipendenze sono chiare?
  • Sono state commentate le parti che potrebbero risultare confuse?

La cosa più importante è capire che l'HTML e il CSS in un documento possono cambiare con più probabilità del Javascript. Dunque è una buona idea non avere nessun nome di classe e di ID o stringhe che saranno mostrate all'utente finale seppellite da qualche parte nel codice. Meglio separarle all'interno di un oggetto di configurazione:

myscript = function(){
var config = {
navigationID:'nav',
visibleClass:'show'
};
var nav = document.getElementById(config.navigationID);
function init(){
show();
if(nav.className === config.visibleClass){
reset();
};
// do stuff
};
function show(){
var c = nav.className;
// do stuff
};
function reset(){
// do stuff
};
}();

In questo modo chi deve mantenere il codice sa esattamente cosa cambiare e come cambiarlo senza dover alterare il resto del codice.

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida jQuery UI

Creare siti ricchi e dinamici con jQuery UI, il progetto ufficiale...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti