Codice di riscrittura / migliore schema iniziale

3

Progetto per singolo programmatore. Devo continuamente riscrivere il mio codice su un progetto in corso. Non è bacato, ma ogni volta che espongo il mio programma (che sono le funzionalità pianificate in precedenza), continuo a dover espandere le classi precedenti, il che mi induce a riscrivere il codice che ha funzionato bene prima.

Ho dei test unitari, quindi i bug non vengono introdotti, ma sembra ancora controproducente e sembra che stia perdendo tempo. Aggiungo costantemente funzionalità che non erano originariamente necessarie, ma diventano necessarie man mano che il progetto cresce in complessità.

Devo continuare con questo sviluppo iterativo? Sembra che ad ogni iterazione continui a dover riscrivere sempre più codice vecchio man mano che vengono aggiunte nuove funzionalità.

C'è un modo migliore per gestire il mio progetto? So (approssimativamente) cosa voglio che faccia il mio programma e come farlo.
Inoltre, quali strumenti / filosofie di sviluppo dovrei usare per gestire progetti one-man? Ho una lista di cose da fare (e questo è tutto) ha fatto un ottimo lavoro finora. Forse una sorta di programma astratto di definizione della classe?

    
posta David 06.07.2011 - 20:12
fonte

3 risposte

2

Dato che sai cosa vuoi che faccia il tuo progetto (per la maggior parte), e non c'è interazione costante con un "cliente", l'uso di un approccio iterativo può introdurre un sovraccarico non necessario. Ritengo che gli approcci iterativi siano più adatti ai piccoli team che possono comunicare frequentemente con un cliente che può cambiare i requisiti al volo. Sembra che potresti trarre vantaggio pianificando tutto in anticipo per migliorare la generalizzazione e ridurre la ripetizione. Forse fare una ricerca per alcuni approcci basati su piani? Naturalmente, le strategie per generare documentazione formale e tutto ciò che non dovrebbe essere seguito (molto informale dovrebbe essere sufficiente ... considerare Doxygen se possibile).

Se vuoi modellare tutto (che sembra una buona idea dati i tuoi problemi), potresti usare qualcosa di formale come i diagrammi UML. Sembra un po 'eccessivo per un progetto one-man, ma ti aiuterà a tenere traccia di tutto ad un alto livello di astrazione.

    
risposta data 06.07.2011 - 20:21
fonte
1

Should I continue with this iterative development?

Molto probabilmente stai riscrivendo / espandendo il codice precedentemente scritto perché devi supportare nuove funzionalità che non avresti potuto prevedere prima. Prendendo il tempo (soprattutto quando ti è permesso farlo), questo ti porterà grandi benefici a lungo termine.

Tuttavia , quando ti trovi costantemente a dover implementare un nuovo comportamento imprevisto, questa potrebbe essere un'indicazione che dovresti impiegare più tempo per inchiodare le tue funzioni . La decisione sulle astrazioni corrette viene effettuata principalmente valutando le funzionalità richieste.

Essere un programmatore è molto più che "scrivere codice", è anche trovare il giusto equilibrio nella progettazione del tuo sistema tra "fare le cose" , e "supporto per l'estensibilità" .

    
risposta data 06.07.2011 - 20:28
fonte
0

it still seems counter-productive and seems to be wasting time. I'm constantly adding features that weren't originally needed, but become needed as project grows in complexity.

In quale altro modo il software può crescere?

Ti aspetti che potresti essere in qualche modo un genio e prevedere il futuro?

Should I continue with this iterative development?

Che scelta c'è? Altro che perfetta lungimiranza?

Is there a better way to manage my project?

Sì. Lungimiranza perfetta.

I have a running to-do list (and that's all) has been doing a fine job so far. Maybe some kind of abstract class-outlining program?

Questo è ciò che chiamiamo "design". È abbastanza difficile e niente lo rende più facile.

It seems with every iteration I keep having to re-write more and more of old code as new features are added.

Benvenuti nello sviluppo del software.

    
risposta data 06.07.2011 - 20:25
fonte