Quando avvii un nuovo progetto, spesso inizio a pensare immediatamente ai dettagli dell'implementazione. "Dove metterò il DataBaseHandler? Come dovrei usarlo? Le classi che vogliono usarlo si estendono da qualche superclasse astratta ...? Dovrei usare un'interfaccia? Che livello di astrazione userò nella mia classe che contiene metodi per inviare richieste e analizzare i dati? "
Finisco lo stallo per molto tempo perché voglio codice per estensibilità e riusabilità. Ma mi sembra quasi impossibile passare oltre pensando a come implementare perfettamente.
E poi, se provo a dire "fanculo, basta farlo!", ho colpito un muro di mattoni abbastanza velocemente perché il mio codice non è organizzato, ho mescolato livelli di astrazione, ecc.
Quali sono alcune tecniche / metodi che hai per lanciare in un nuovo progetto e anche impostare una struttura logica / modulare che si adatti bene?
- - EDIT - -
Bene, questo è già il tipo di domanda a cui è difficile accettare una risposta, ma volevo ottenere un ulteriore feedback, vedere se c'è un consenso. TDD suona molto bene e, francamente, ho intenzione di essere più veloce nell'usare JUnit, ecc. Allo stesso tempo, cosa pensano i fan di TDD del fatto che un punto legittimo in relazione al TDD risolve il mio problemi particolari, è che TDD non sembra davvero affrontare la questione del design. Certo, sono d'accordo che TDD mi aiuterà a definire ciò che voglio fare e poi a lavorare gradualmente su come, ma ci sono molti diversi modelli / strutture di design che potrebbero passare attraverso i test unitari. È proprio così: mette alla prova singole UNITÀ. Immagino di essere un po 'confuso ... non so. Forse sto solo cercando di procrastinare ancora di più cercando di capire qualche formula magica, ma mi piacerebbe sentire come alcuni dei veterani si avvicinano a quest'area ...
Grazie!