Sto sviluppando un progetto di esempio in Android per il telefono di un amico che tiene traccia delle sue vendite. All'inizio, uno dei requisiti era creare rapporti annuali di questi dati di vendita. Questo sarebbe roba come settimana più redditizia, totale per trimestre, totale al mese, e anche totale annuale, così come i confronti per gli anni precedenti (circa 10 cose in totale).
Ho creato una classe chiamata YearlyReport che ha tutte queste proprietà e vengono popolate da una classe di database che effettua le chiamate SQL appropriate.
Questi dati vengono visualizzati su una pagina di statistiche, ma dopo aver visto questo, il mio amico mi ha chiesto di dare allo spettatore la possibilità di selezionare settimane diverse e di visualizzare anche dati settimanali (3 bit di informazione: il totale per la settimana, il giorno migliore nella settimana, il peggior giorno della settimana). Così, mentre cambiano le settimane dell'anno, vuole vedere i dati settimanali sopra i dati annuali.
Quindi ora ho bisogno di fare query specifiche sui dati settimanali, ma anche di visualizzare dati annuali. Mi sento davvero disorganizzato per qualche motivo! All'inizio ho creato un oggetto WeeklyReport, e il database dirà "ok per una determinata settimana W, riempirò il tuo oggetto WeeklyReport e lo restituirò". Poi ho iniziato a chiedermi se dovevo fare qualcosa di più intelligente. Forse combinare qualcosa? Dovrebbe esserci ereditarietà? Mi manca qualcosa.
Va bene avere un oggetto WeeklyReport e YearlyReport? Dovrei combinarli? Se lo faccio, è ancora strano perché il rapporto annuale non cambia molto a meno che non ti sposti ad un nuovo anno (non spesso), ma il settimanale lo fa (a seconda della data).