What do I need to do to help my, apparently, limited imagination come up with ways that my project could possibly be broken?
Nella maggior parte dei casi, direi assolutamente nulla. Non dovresti cercare di immaginare cose che potrebbero causare la rottura del programma. Dovresti determinare sistematicamente cosa è causando la sua interruzione.
Dovresti entrare nel processo di debug con le seguenti informazioni:
- i passi che sono stati presi e i valori che sono stati inseriti per produrre il bug;
- che cosa deve fare il programma dovrebbe quando vengono dati quei passi e questi input;
- che cosa sta facendo il programma quando vengono dati quei passaggi e input.
Se c'è un messaggio di errore, prendi tutte le informazioni che puoi su di esso. Se il messaggio di errore non è chiaro e non sai cosa significa in pratica (alcuni messaggi di errore non sono sempre particolarmente utili), quindi utilizza Google, o StackOverflow o qualsiasi altra risorsa online per trovare informazioni su di esso .
Se non è visualizzato un messaggio di errore sul front-end, controllare i registri a cui l'applicazione scrive per i messaggi di errore durante il periodo di tempo in cui è stato riprodotto il bug. Il codice potrebbe essere stato eseguito fino al completamento, ma ha riscontrato un'eccezione che viene gestita nel modo in cui sta eliminando il risultato finale e producendo una voce nei log. Cerca quelli, fai lo stesso sopra e identifica esattamente cosa intendono.
Se ci sono stacktraces forniti con eccezioni lanciate dal tuo codice (e dovrebbe esserci), guarda le linee di codice menzionate. La linea stessa potrebbe non essere quella che sta effettivamente producendo il problema. Se ottieni una NullPointerException in un pezzo di codice Java, lo stacktrace ti dirà dove hai provato a usare qualcosa che era nullo quando ti aspettavi che non lo fosse. Questo non ti indica esattamente la linea che causa il problema, ma generalmente ti dice quale variabile non ha il valore che ti aspetti, così puoi guardare qualsiasi riferimento / assegnazione a quella variabile per determinare che il valore non viene impostato o il valore viene impostato in modo errato.
Se nessuno di questi ha aiutato, fai partire il tuo debugger. Se lo hai ristretto a una sezione del codice che sai causi il problema, ma non sai esattamente quale / i linea / e - allora attraversala. In caso contrario, basta passare attraverso l'intera cosa. Qui è dove devi sapere esattamente cosa il programma dovrebbe fare con gli input dati, perché devi controllare ogni valore dopo ogni riga e determinare esattamente dove si sta deviando da ciò che ti aspetti che faccia.
Ancora non hai idea di quale sia il problema? Chiedi aiuto a qualcuno . Un collega, un amico, una comunità online. Mostra loro tutto ciò che hai appena fatto. Mostra loro i messaggi di errore, gli stacktraces, spiega cosa fa il programma in termini generali (se non lo sanno già), cosa dovrebbe fare in questo istanza particolare (es. restituendo il valore 4), cosa sta facendo in realtà (es. restituendo il valore 5). Se lo hai ristretto a poche righe di codice nel debugger, dì "So che il problema è causato da queste righe nel codice, sta impostando il valore su X quando dovrebbe essere Y, ma non riesco a vedere perché sta succedendo ".
Trascorrere alcune ore a fissare in bianco lo schermo non è sicuramente divertente, ma non c'è motivo per cui dovresti farlo. Se c'è un problema con il tuo codice, devi leggere o passare il codice.