In qualche codice javascript sto lavorando al refactoring Ho gestito casi in cui volevo impostare come predefinito una proprietà dell'oggetto su true senza dover passare attraverso il code-base e aggiungere la proprietà a ogni istanza dell'oggetto facendo qualcosa così:
if(typeof(thisBool) === 'undefined' || thisBool) {
//do cool stuff here;
}
quindi per le istanze esistenti ho dovuto solo correggere il modello nei casi in cui volevo impostare thisBool
su un valore calcolato altrove, o impostarlo su false; se è stato disattivato, questo codice lo ha trattato come vero.
Gli oggetti vengono creati dinamicamente quando usati - non sono classi definite, ma sono "istanziati" qualcosa del genere:
var thing1 = {
Name: 'thing No 1',
HasCat: false,
[thisBool: true]
};
e thing1
viene passato alla funzione
Questa è una pessima idea? Sto aggiornando quel codice (e tutte le istanze) quindi ora è il momento di sistemarlo, se è un odore di codice.
Per parte mia preferirei essere più esplicito, ma vedo anche il valore nel non dover fornire un thisBool: true
in centinaia di posti, dove per impostazione predefinita thisBool
dovrebbe essere true. C'è un modo migliore per raggiungere questo obiettivo?