Mi capita molte volte di leggere discussioni che mi sembrano "volte" sempre ad una mal strutturazione del software, perchè molte volte alcuni (anche io) iniziano a sviluppare un applicativo senza prima mettersi a ragionarci sopra.

Possiamo, in linea generale, tracciare delle linee guida per avere un software comunque "strutturato" decentemente?

io credo che un software per avere delle linee guida generali decenti, debbA:

1) Rispettare il pattern MVC. ovvero gli oggeti delegati al loading/saving dei dati devono essere indipendenti dal resto dell'applicazione

2) se si interagisce con immagini e file esterni, usare il getresource (o getresourceAsStream) e mettere i file all'interno della cartella che contine i .class, altrimenti in fase di esportazione non vengono portati all'interno dello stesso

3) se si caricano dati allo startup, o in fase di esecuzione, usare dei thread per il loading, si alleggerisce il software stesso e si rende la GUI più leggere (niente più pulstanti che restano premuti mentre si apre un file)

4) usare nomi varieabili/metodi/classi autoesplicanti ma non troppo.
La classe "PersonaSenzaCodiceFiscale" è prolisso...mentre "PersonaSenzaCF" va già meglio

5) commentare i metodi più complessi per le generazioni future.

6) set e get OVUNQUE

7) non mettere a tacere le eccezioni MAI

8) Divide et Impera sempre e comunque...siamo ad oggetti, sfruttiamoli!!!

9) Swing va bene, non AWT, ma Swing...

10) Usare le interfaccie per rendere gli oggetti "estendibili" per futuri aggiornamenti.

Queste sono alcune idee che mi sono fatto e che vorrei voi confermaste/confutaste. Sono aperto ad ulteriori critiche