Attualmente sto rifattorizzando un'applicazione che ho creato in JavaScript.
L'applicazione utilizza un'ora di inizio e un numero totale di ore di lavoro per costruire un calendario per le visualizzazioni giornaliere, settimanali e mensili. L'ora di inizio e il conteggio totale delle ore di lavoro sono uguali per tutti gli orari
Ho preso in considerazione l'utilizzo di un pattern per inizializzare l'orario e ho iniziato a leggere su come procedere nel fare ciò in Javascript perché non ho molta familiarità con la lingua. La mia funzione di inizializzazione originale per l'orario aveva la seguente firma:
FillTimeTable( startingTimeWeekDay, workinghourCountWeekDay );
Il problema con questo metodo è che per una diversa visualizzazione dell'orario devo chiamare nuovamente le altre viste con la stessa firma.
FillWeeklyTimeTable( startingTimeWeekDay, workinghourCountWeekDay );
FillMonthlyTimeTable( startingTimeWeekDay, workinghourCountWeekDay );
Se le ore di lavoro cambiano, io o il povero bugger che mantieni il mio codice dovremmo modificarle in punti diversi all'interno del codice e, a causa del modo in cui organizzo il mio codice, non sono posizionati così bene come qui. Quindi durante il refactoring ho considerato alternative come una variabile globale, Singleton o un oggetto.
Ho letto di oggetti, membri privati e costruttori e ho deciso che questa potrebbe essere la soluzione dopo aver letto su Implementazioni Singleton e binning delle variabili globali.
Quindi attualmente ho il seguente codice:
function Timetable( startingTimeWeekDay, workinghourCountWeekday) {
this.startWeekday = startingTimeWeekDay;
this.hoursWeekday = workinghourCountWeekday;
}
Timetable.prototype.startWeekday = function() {
return this.startWeekday;
}
Timetable.prototype.hoursWeekday = function() {
return this.hoursWeekday;
}
var myTimetable = new Timetable( 6, 8 );
Fino ad ora tutto funziona bene, ma myTimetable mi sembra davvero un modo fantastico per dichiarare una variabile globale per me.
È questo il caso?
Ho appena deciso la strategia sbagliata o è questa la strada da percorrere o ho perso qualcosa di essenziale per lavorare con JavaScript?