Yet, I find myself making mistakes and reworking code constantly. Is there a better approach or a structured methodology that I should follow?
Alcuni decenni fa alcune persone credevano che ci sarebbe stata una metodologia migliore e l'avrebbero chiamata "modello a cascata" . Ma al giorno d'oggi è ampiamente riconosciuto che quando si cerca di sviluppare un programma non banale, non si riesce quasi mai a "fare bene" al primo colpo, anche se si è molto esperti. Ci saranno bug, requisiti e casi limite trascurati a prima vista, considerazioni sulle prestazioni, miglioramenti del design necessari che diventano visibili solo quando il tuo programma raggiunge una certa dimensione e altre ancora.
IMHO il punto chiave per la professionalità è imparare a gestire i cambiamenti . Questo inizia con cose semplici come una lista di priorità di requisiti aperti, facendo alcune considerazioni sulla progettazione prima della codifica (come quelle descritte nel tuo commento), l'uso del controllo di versione (per tenere traccia di eventuali modifiche), e va oltre con il rilascio pianificazione, test automatici (per assicurarsi che le modifiche future non interrompano il comportamento esistente) e applicazione del SOLID principi.