È meglio scrivere l'intera funzione e quindi eseguire il debug o farlo in modo incrementale? [chiuso]

1

Supponiamo che esista un'attività di programmazione di dimensioni ragionevoli (500 righe di codice). Quale è meglio?

1 / Codifica l'intera attività dall'inizio alla fine senza eseguire il codice e fai il debug in seguito.
2 / Codice alcune piccole funzionalità, quindi prova e fai il debug, quindi ripeti fino a quando l'intera operazione è terminata.

Personalmente, a giudicare dalla mia esperienza, a volte il primo approccio consente di risparmiare tempo. Ma a volte ci vogliono più cicli di compilazione-run-debug per farlo funzionare.

Il secondo approccio funziona in modo costante, ma a volte sembra che non sia così efficiente.

Quali sono le tue esperienze su cui generalmente è l'approccio migliore?

    
posta stormtrooper 21.12.2018 - 08:24
fonte

2 risposte

6

C'è una ragione per cui "Test Driven Development" è diventato estremamente popolare oggi - permette agli sviluppatori di scrivere un po 'di test, un po' di codice, compilarlo, testare un po '(magari eseguirne il debug, se necessario) e refactoring - in cicli misurati in minuti , non in giorni o ore. Quindi c'è un ampio consenso sul fatto che non è sicuramente una buona idea scrivere un blocco di 500 righe di codice e quindi lasciare che il codice funzioni la prima volta, vedere se si blocca (cosa che molto probabilmente lo farà), e quindi iniziare a guardare per tutte le possibili cause di root (che sono molte in un blocco di codice di quelle dimensioni).

C'è solo una situazione in cui posso pensare di codificare a grandi passi e "debugare più tardi" potrebbe far risparmiare tempo - quando si hanno tempi di turn-around molto grandi. Quando ogni ciclo di build richiede 30 minuti o più, non si desidera compilare, compilare e eseguire il debug dopo ogni 10 nuove righe di codice.

Fortunatamente, la maggior parte degli ambienti di sviluppo oggi non impone tempi di compilazione simili agli sviluppatori, e persino nei progetti C ++ su larga scala, ci sono mezzi disponibili per mitigare tali problemi.

Tuttavia, non è solo una questione di ambiente, ma è anche una questione di strutturare il tuo progetto in componenti . Se è possibile implementare, ad esempio, 450 linee delle 500 linee totali del codice in un componente separato, che può essere compilato e testato separatamente dal resto del sistema (magari utilizzando TDD, o almeno utilizzando i test di unità), allora può (e dovrebbe) sviluppare il componente nel minor numero possibile di cicli di codice / compilazione / test / debug, anche se una compilazione completa del sistema impiegherebbe più di un'ora. Successivamente, è possibile completare la fase di integrazione separata con le ultime 50 righe di codice "en block".

    
risposta data 21.12.2018 - 10:11
fonte
-1

È in gran parte una questione di gusti - e la tua memoria di lavoro (come nel tuo cervello, non nel tuo computer).

Processi come TDD tenderebbero a favorire la codifica e testare piccole funzionalità alla volta - la logica è che sei nella posizione migliore per scrivere buoni test e risolvere i problemi quando il nuovo codice è nuovo nella tua mente. Siamo tutti sicuri di aver trovato e corretto bug che ci siamo resi conto che sarebbe stato molto più semplice da sistemare quando la cosa veniva codificata se fosse stata presa un po 'più di cura.

    
risposta data 21.12.2018 - 10:07
fonte

Leggi altre domande sui tag