Siamo un gruppo di sviluppatori che lavorano su un'applicazione web che accetta moduli compilati e inviati dai nostri utenti e li presenta in una vista d'insieme. La nostra vista modulo principale ha il seguente aspetto:
Cisonopiùmoduliinquestapagina.Ilmoduloasinistraèlaformagenitorechecontienedomandegeneralisulprogetto.Ipannelligiustisonodomandepiùdettagliateeriguardanoisotto-progetti.Leformesonolungheecontengonodiversitipidiproprietà(elementidelmodulo)inesse.Laformagenitoreèstaticaevieneapertaalcaricamentodellapagina.Nonabbiamodatoopzioniperchiuderloominimizzarlo.Ipannellididestra(modulifiglio)vengonocompressiperimpostazionepredefinitaeapertipercliceilcontenutovienequindisottopostoarendering.Questoèfattoperridurreiltempodicaricamentodellapagina.Hoannotatol'immaginequindinondevospiegaretuttodasolo.Tuttonellafotochehaunrettangoloattornoèunavista(Backbone)dasolo.Perrenderloancorapiùcomplesso,guardaquest'altraimmagine:
Suppongo che tu l'abbia già capito, ma lo dirò comunque: il codice è cresciuto in modo anomalo. È davvero una lattina di vermi. Ci sono più di 30 funzioni nel file di visualizzazione di base e 15 altre viste allegate a questa pagina. Molte persone hanno lavorato su questa vista e poiché si tratta di un file di grandi dimensioni (file di base: 2500 LOC), tutti hanno appena provato a svolgere il proprio compito e non pensare al refactoring o alla semplificazione del design della pagina. La pagina è difettosa perché non è estensibile. Ad esempio, le forme grand-child hanno altri due livelli di forme figlio e non possiamo aggiungerle alla pagina. Abbiamo discusso per giorni su come ridisegnare questa pagina, ma nessuno di noi sembra avere una buona idea.
Ora la domanda qui è come possiamo riprogettare questa pagina in modo che mantenga tutte le funzionalità ma con un codice molto più semplice?
Siamo OK con una riprogettazione totale, un concetto totalmente nuovo. Vogliamo scrivere tutto da zero. Tutte le tue idee sono apprezzate.