Sono in una piccola squadra a cui è stato consegnato un gioco Java 2D scritto a metà e mal scritto. Il nostro obiettivo è fare tutto il possibile per migliorarlo in circa 11 settimane. Sono abbastanza sicuro che il codice non sia gestibile e ho bisogno di decidere se dovrei lanciare l'idea di una riscrittura (vicino alla riscrittura, comunque).
Ad esempio, la classe Main, che è un'applet, ha la maggior parte della logica di gioco appena lanciata. Gli eventi di tastiera e mouse sono gestiti con enormi blocchi if / else, nessuno dei quali viene commentato (gli unici commenti sono le sezioni di codice che sono state commentate) e tutto il codice di disegno e animazione è in un unico enorme pezzo. Le immagini vengono caricate in una classe separata che passa solo attraverso ciascun file, ciascuno su una riga separata e legge l'immagine in una variabile immagine statica. Sembra tutto un pessimo design.
Abbiamo tempo fino alla fine del semestre, circa 11 settimane, per rendere il gioco migliore di adesso. È giocabile ma gravemente rotto nei punti. Al momento mi è stata assegnata una piccola funzionalità da implementare: un menu principale cliccabile anziché uno controllabile solo da tastiera. Da un lato so di essere capace di implementarlo ma dall'altro ho paura di provare ad aggiungere nuove funzionalità perché a) più cose aggiungiamo, più è probabile che il programma si interrompa a causa delle cattive scelte progettuali e b) più aggiungerò al casino che c'è già.
Ho preso il fine settimana per provare a duplicare la funzionalità di base del gioco con un design diverso (per vedere se poteva essere fatto abbastanza velocemente). Sono in grado di caricare e memorizzare gli sprite, creare entità di gioco e spostarli, e tenere traccia dello stato del gioco per determinare quale input da gestire sulla tastiera e cosa disegnare sullo schermo. Un caricatore di spritesheet è stato il prossimo sulla mia lista (ho scoperto che la grafica del gioco non è nei fogli sprite ma ognuno è in un file separato). Un amico fidato ha detto che potrebbe essere meglio mantenere il vecchio codice ma guardarlo è troppo fragile. Potremmo refactoring mentre andiamo, ma penso che sarebbe difficile anche.
Il nostro gruppo si incontrerà questo venerdì. Avevo pianificato di discutere l'idea di una revisione e di presentare ciò a cui stavo lavorando, ma ora non ne sono così sicuro. Mi sembra un gioco 2D in 2D abbastanza semplice che una volta creata una solida base che sarebbe molto più semplice aggiungere funzionalità, ma dovremmo ridisegnare il codice base abbastanza rapidamente, probabilmente tra due o quattro settimane o giù di lì . Mi piacerebbe pensare che possiamo farlo velocemente ma non ne sono completamente sicuro.
Immagino che potresti ridurre la mia domanda a questo: come determinare meglio quando mantenere un codice mal progettato e quando passare un po 'di tempo a partire quasi completamente da zero?