Conosco molto bene questa situazione. Quando rimango bloccato in questo modo cerco di prendere diversi punti di vista sul progetto.
1.) Punto di vista utente / cliente - usa il feedback
Purtroppo siamo presi nel nostro codice in un modo che non siamo in grado di vedere i nostri difetti perché utilizziamo le nostre applicazioni nel modo in cui le abbiamo codificate.
Guarda come la gente lo usa e cerca di capire quale sarebbe la guida per l'utente più intuitiva.
Gioca con i prototipi UI.
Questo sembra essere divertente, ma se scopri che sarai costretto a ricodificare parti enormi del tuo codice semplicemente cambiando la logica di utilizzo di quanto non sia il momento di iniziare un ciclo di riprogettazione.
2.) Effettua un'analisi funzionale del tuo codice e visualizzalo
Alcuni IDE e framework ti spingono ad es. miscelazione dell'interfaccia utente e del codice back-end. Se lasci che ciò accada, ad un certo punto dovrai affrontare la situazione in cui la tua base di codice non può essere mantenuta a causa di dipendenze nebulose e difficili da rompere. Soprattutto la combinazione del codice UI con un altro codice può portare a codice spaghetti e funzionalità ridondanti.
Dividi il tuo codice in blocchi funzionali come ad es. classi di database, classi di comunicazione, classi UI, classi di base ecc. e forniscono i nomi di lingua dei blocchi funzione.
Quindi visualizza la funzionalità con uno strumento grafico (io uso uno strumento di mappatura mentale) per scoprire se la tua struttura è abbastanza logica e modulare da poter riutilizzare enormi blocchi di codice per diversi progetti e sei in grado di sostituirli con le versioni più recenti senza grande dolore.
Il modo migliore per farlo nella mia esperienza è creare un documento che visualizzi tutte le dipendenze tra le tue classi e le loro chiamate dal tuo codice. Il risultato è una visualizzazione del design dell'interfaccia.
Se questa mappa del codice sembra un clusterf completo di ***, è ora di agire.
Se non è ancora successo, dovresti pensare a una convenzione di denominazione adatta che rappresenti la struttura del codice in un modo in cui non devi pensare a come chiamarla e cosa fa.
3.) Utilizza approcci comuni per la garanzia della qualità
Il mio preferito è il FMEA. In termini di codifica ciò significa non solo analizzare ciò che è andato storto in passato, ma anche pensare a cosa potrebbe andare storto. Un esempio abbastanza comune è una connessione di rete improvvisamente caduta. Dopo averlo fatto, è possibile classificare le condizioni di errore in base a conseguenze quali perdita di dati, crash, calcolo errato e valutazione dell'impatto sull'utente.
Se non si è ancora riusciti a definire un errore ottimizzato, le classi e le routine delle eccezioni possono aiutarti a mantenere il codice pulito e lineare. Il modo migliore è implementare quelli in ogni nuova pace di codice prima ancora di iniziare a scrivere qualcos'altro. (Beh, sono colpevole di non seguire sempre questo consiglio da solo.)
Inoltre mi ha aiutato a generare e aggiornare frequentemente un "elenco di proposte di miglioramento" per il mio codice. (Per essere onesti c'è ancora un sacco di codice nei miei progetti di cui non sono assolutamente orgoglioso.)
Cerco anche di prendere il tempo per raccogliere e dare un'occhiata al codice di best practice da documentazioni API, conferenze per sviluppatori o riviste per sviluppatori.
Fino a questo punto non è necessario toccare il tuo codice. Si tratta semplicemente di capire cosa sta andando male e trovare un modo per definire come migliorare il codice.
Finalmente alcuni consigli per il lavoro quotidiano da una vecchia scoreggia. Cerca di evitare di mordere più di quanto tu possa mangiare.
Ciò porta a troppa pressione per una codifica pulita. Raramente hai il tempo di farlo bene, ma dopo dovrai prendere il tempo per sistemare i difetti.
Nulla è più duraturo della soluzione provvisoria, ma quando si rompe è spesso troppo tardi per risolverlo in tempo. Esempi sono brutti hack o strane eccezioni che ho usato per ottenere qualcosa da lavorare nonostante, ad es. un difetto nel framework o nel sistema operativo sottostante. E poi l'errore viene risolto o la nuova versione semplicemente lascia l'API ...
Se sei bloccato e sei costretto a trovare una soluzione alternativa a fare commenti e prendere appunti che dovrebbero essere rivisti di volta in volta.
Normalmente miglioriamo grazie all'apprendimento di qualcosa di nuovo.
Se trovi un modo migliore di implementarlo il più velocemente possibile.
Altrimenti potresti trovarti a codificare la soluzione alternativa per la soluzione alternativa e l'eccezione dell'eccezione un giorno.
(Colui che è senza peccato tra di voi, lascia che lanci il primo byte contro di me.)