Il primo passo è decidere cosa vuoi che faccia il tuo programma. Fai un elenco dettagliato delle funzionalità che desideri che il tuo programma abbia. E una volta deciso, evita di aggiungere qualcosa di nuovo a metà dell'implementazione. Se si progetta il codice correttamente, si dovrebbe essere in grado di aggiungere nuove funzionalità con relativa facilità in seguito.
Decidi chi sta utilizzando il tuo programma e in che modo interagiranno con esso. È un cliente specifico per il quale lo stai progettando? In tal caso puoi permetterti di specializzare il design del programma in base alle preferenze dei tuoi clienti. Lo stai progettando per un vasto pubblico? In tal caso vorrai che sia più personalizzabile, ma semplicistico. Avrai anche bisogno di mettere più pensiero in apparenza. gli utenti interagiranno con un server? Se è così, ti consigliamo di progettare il tuo programma per renderlo scalabile.
Decidi su come intendi progettare il programma. Il tuo programma sarà guidato dagli eventi? In tal caso, utilizzerai un sistema di polling degli eventi o avrai gestori di eventi? Se il tuo programma deve essere scalabile, il tuo progetto consente miglioramenti di runtime senza tempi di inattività massivi? Sarai in grado di migliorare facilmente le prestazioni di runtime senza enormi riscritture? Pensa in modo approfondito alla scelta del design, perché se non lo fai, può comportare il riavvio da zero.
Dopo tutto questo è fuori strada, inizia a pensare a come strutturerai il tuo codice. Questo è un intero processo tutto suo, quindi non approfondirò, indicherò solo alcune cose da evitare.
1) Non utilizzare interfacce / classi astratte se non è necessario. Non sono caratteristiche magiche che dovrebbero essere usate in ogni occasione, contrariamente a quanto dicono le persone. Possono portare a massicci problemi di reimplementazione e un design scadente.
2) non usare troppo l'ereditarietà. Per la stessa ragione sopra indicata.
3) non sovrascrivere il tuo codice. Non hai bisogno che tutto sia il più veloce possibile se tutto quello che stai facendo è ordinare un piccolo contenitore con 30 elementi. Non è necessario rendere tutto il più astratto possibile. Se i benefici non possono essere osservati né attraverso le prestazioni, né la leggibilità / manutenibilità del codice, non ne vale la pena.
4) assicurati di rendere il tuo codice modulare quando possibile. Farà più facile aggiungere o rimuovere funzionalità in futuro.
Ecco alcuni suggerimenti di base che posso offrirti.