Debug delle funzioni reciprocamente ricorsive

-2

Abbiamo una classe in cui principalmente l'elaborazione dei dati (nodi XML) viene effettuata principalmente da 3 metodi. Ora il codice in sé segue rigorosamente il principio ASCIUTTO. Ad esempio,

  1. Elabora figli (legge i dati dai nodi figli)
  2. Processo Scegli elemento (controllo dei dati condizionali)
  3. Estrai campo singolo (estrai i dati da un singolo nodo senza figli)

Per darti una panoramica, diciamo che raggiungiamo il nodo A, quindi chiamiamo ProcessChildren() e se qualche bambino è Choose chiameremo ProcessChoose() . Quindi chiameremmo ricorsivamente ProcessChildren() risultato e quindi vale la pena. Anche se questo codice è facile da leggere e tutti i bug sono stati rimossi, il debugging è molto difficile dal momento che l'una funziona in un altro e così via. C'è un modo per rimuovere questo ostacolo di debug in modo che il debugging sia facile?

    
posta Sachin Sharma 04.01.2016 - 15:12
fonte

1 risposta

9

Il debug è facile quando non ne hai affatto bisogno.

Hai tre metodi. Se ognuno di essi è corretto, probabilmente non sarà necessario eseguire il debug di una combinazione di questi.

  • Dividi i tre metodi in parti più piccole, ciascuna definita chiaramente. Fallo finchè la correttezza di ogni parte è completamente ovvia, per via della sua semplicità.
  • Scrivi test unitari per ciascun metodo. Coprire sia l'input corretto che quello errato. Presta attenzione ai casi d'angolo.

Hai fatto questo, ma hai ancora difficoltà a capire cosa succede?

Forse il debugging passando manualmente ogni riga è troppo lento, perdi traccia di ciò che sta accadendo.

  • Aggiungi grandi quantità di registrazione ai tuoi metodi. Registra gli argomenti passati, tutto lo stato intermedio interessante (che dovresti avere il meno possibile), forse un contesto come i nodi vicini dell'albero XML. Assicurati numeri di riga sono registrati .
  • Prova ad usare i breakpoint condizionali, in modo che il debugger si attivi solo quando accade qualcosa di interessante.

È probabile che guardando il registro dettagliato si ottenga un'immagine migliore rispetto a variabili che cambiano costantemente nella finestra del debugger.

    
risposta data 04.01.2016 - 15:49
fonte

Leggi altre domande sui tag