In linguaggi statici come Java / C #, di solito uso le costanti per stringhe o numeri, piuttosto che inserirli nel codice da solo. Tuttavia, tendo ad evitare questa pratica in JavaScript. Più di recente, poiché alcuni altri programmatori intorno a me hanno adottato questo approccio in JS, ho deciso che probabilmente avrei dovuto consolidare il mio o il loro ragionamento.
Non esiste una sintassi di dichiarazione "const" effettiva in JavaScript. Di solito ci accontentiamo di una politica informale di non modificare le proprietà maiuscole. Ma la mia opinione è di solito di evitarli del tutto, perché la maggior parte dei loro benefici si perde in JavaScript. In Java, una stringa errata causerà il fallimento del programma quando si tenta di eseguirlo, a quel punto lo si corregge e si passa. Avere un controllore statico in cui entrambe le istanze puntano alla stessa costante elimina quel problema, in quanto può essere trovato in fase di compilazione. Ma JavaScript avrà semplicemente quel problema dappertutto, dato che scoprirai SEMPRE la correttezza dell'ortografia in fase di esecuzione :
Library = { doThing: function() }
setTimeout(function()
Liberry.doThing()
// No such object: Liberry
}, 0);
La migliore salvaguardia contro questo, di solito, è "usare rigorosamente". Per gli sviluppatori che lo preferiscono, sto bene con loro che lo usano per trovare più rapidamente problemi con le variabili non dichiarate. Ma la mia opinione è stata che fornire costanti di stringa per le API REST, ecc., In realtà non ti salvaguardi da nulla. Un altro esempio:
CompanyAPI.constants.ENROLL_URL = "/rest/enroll";
CompanyAPI.constants.FIRST_NAME = "firstName";
ajax({url: CompanyAPI.constants.ENROLL_URL,
data: CompanyAPI.constants.FIRST_NAME
});
// vs.
ajax({url: "/rest/enroll",
data: "firstName"
});
... Volevi scrivere quanto sopra, ma poi hai fatto errori di battitura. Ops.
ajax({url: CompanyAPI.constants.ENROL_URL,
data: CompanyAPI.constants.FIRS_NAME
});
// vs.
ajax({url: "/rest/enrol",
data: "firsName"
});
Quello basato su costante fornirà ancora undefined , mentre "firsName" non è migliore. A tal fine, tendo a vedere questo come un vantaggio dei linguaggi statici, e non preoccuparsi di avere un sistema per risolverlo (oltre a magari iniziare a usare "use strict" per il debug). Alcune persone potrebbero dirmi quale sia la loro pratica preferita per la costante stringa / intero?
EDIT: Per chiarire, la mia preferenza è di solito mettere stringhe come "firstName" direttamente in linea senza una dichiarazione costante di alto livello - le sanzioni per l'errore di ortografia sono uguali in entrambi i casi. Le stringhe che potrebbero durare a lungo, come un URL REST, tenderò a definire nella parte superiore del file.