E 'un brutto segno che spesso sto riprogettando mentre sviluppo un progetto?

39

Quando ho iniziato a programmare, ho pensato che un giorno sarei arrivato al punto in cui avrei iniziato un progetto sedendomi e facendo lo sketch di un diagramma UML di tutte le classi, quindi mi sono attenuto a quello. Ora sto programmando da un paio d'anni e non si sta rivelando così. Mentre passo attraverso un progetto, dico spesso

  • "Ehi, ho bisogno di una classe per fare _ _. Non ci avevo pensato prima."
  • "Aspetta, questa funzione dovrebbe essere veramente in quella classe invece di questa spostalo. "
  • "In realtà dovrebbero essere due classi anziché una. Lo dividerò."
  • "Dovrei rendere queste tre classi autonome tutte ereditate da una classe astratta."
  • Etcetera, eccetera.

È un brutto segno che io stia spesso riprogettando in questo modo mentre procedo? Questo significa che sono un programmatore scadente o è normale?

    
posta juicy lucy 10.05.2011 - 17:59
fonte

7 risposte

41

Questa è una parte normale dello sviluppo. Due dei principi fondamentali di Progettazione continua sono i seguenti:

  1. Non sei onnisciente, non puoi conoscere l'intero sistema dall'inizio alla fine prima di iniziare.
  2. Il design non è statico. Questo è più diffuso quando un progetto è in uso da molto tempo e i problemi che ora sta risolvendo non sono i problemi che stava risolvendo quando è stato scritto per la prima volta.

La mia opinione personale sull'argomento è che dovresti avere una buona idea del design macro , ma permetti al design micro di evolversi. Un altro modo per esprimerlo è che il design di alto livello (che è tanto lontano quanto con UML / strumenti di modellazione) molto probabilmente rimarrà piuttosto statico per tutta la durata di un progetto. La progettazione dettagliata di quali metodi fanno ciò che e la gerarchia di classi devono essere libere per essere malleabili.

Quando non sai molto sul problema che stai risolvendo, farai molti altri passi falsi iniziali. Tuttavia, dopo aver lavorato abbastanza a lungo, il design generale inizierà a sistemarsi e i refactoring di cui parli sono tutto ciò che sarà necessario per mantenere il codice in ordine.

    
risposta data 10.05.2011 - 18:09
fonte
12

Quello che stai facendo è comunemente definito "refactoring". Se mai smetti di farlo, allora sei nei guai.

Il fatto è che la maggior parte del codice è complessa e gli umani, anche quelli abbastanza intelligenti, non riescono a capirlo tutto in una volta.

    
risposta data 10.05.2011 - 18:07
fonte
10

No, sembra che tu stia seguendo YAGNI e refactoring dagli esempi forniti. Non pensi che sia meglio avere questa soluzione migliore ed essere in grado di farlo che non pensare mai più a qualcosa di nuovo?

Lo sviluppo di software agile di solito ha pratiche per adattarsi a ciò che è abbastanza diverso da modello di cascata.

    
risposta data 10.05.2011 - 18:08
fonte
5

Va perfettamente bene (a meno che queste riprogettazioni non siano sempre revisioni importanti o ricostruzioni da zero). Non ti preoccupare Può essere utile iniziare con un diagramma UML all'inizio del progetto, ma non scolpirlo nella pietra in quanto scoprirai quasi sempre che le cose cambiano mentre lavori. Potresti apprendere nuove tecniche che non sapevi all'inizio, potresti voler migliorare alcune funzionalità in modi che non avevi durante la progettazione iniziale, i requisiti aziendali cambiano, a volte ci sono incognite durante la progettazione iniziale che possono < em> solo essere contabilizzato più tardi, ecc ...

Ciò che è importante è andare e aggiornare quei documenti UML iniziali in modo che riflettano eventuali cambiamenti significativi nella progettazione, altrimenti gli sviluppatori futuri (incluso te stesso) potrebbero finire molto confusi. Questo può essere difficile e spesso richiede una buona diciplina (e tempo).

È molto molto molto raro iniziare con un design e rispettarlo al 100% fino all'implementazione. Personalmente ho mai visto accadere una cosa del genere, tranne che per programmi molto piccoli e banali.

    
risposta data 10.05.2011 - 18:08
fonte
4

Quello che stai facendo è perfettamente normale (a condizione che tu non stia ricominciando da zero ogni volta). Sono stato a questo per oltre venti anni, ed è ancora un processo iterativo.

L'unica volta in cui riuscirai a progettare tutto in anticipo e ad attenervisi è se stai risolvendo esattamente lo stesso problema che hai risolto l'ultima volta, e anche allora probabilmente potresti trovare margini di miglioramento.

    
risposta data 10.05.2011 - 18:18
fonte
2

Non sono affatto uno sviluppatore esperto ma lo faccio anche io. Negli ultimi anni, la mia capacità di costruire mentalmente l'architettura necessaria è migliorata notevolmente. Tuttavia, mentre scrivo un software, non importa quanto pianifichi che faccio, ci sono sempre posti che richiedono un po 'di riprogettazione. Luoghi che non avevo realizzato mi sarei ripetuto fino a quando il codice non è stato scritto.

Il mio punto di questo post è di dire che faccio tutto nella tua lista e non mi sento come se queste cose fossero necessariamente negative a meno che non accadessero costantemente e avessero un reale effetto negativo sulla tua produttività.

    
risposta data 10.05.2011 - 18:14
fonte
0

Si chiama processo iterativo ed è un concetto base in tutte le moderne tecniche di sviluppo del software.

    
risposta data 10.05.2011 - 18:11
fonte

Leggi altre domande sui tag