Quando esegui il debug del codice orientato agli oggetti (Java), a volte qualche campo di qualche oggetto è null
mentre non dovrebbe essere. Spendo spesso ciò che ritengo sia troppo tempo per cercare di capire dove dovrebbe essere stato impostato (a quel punto è spesso chiaro cosa è andato storto).
Se fosse stato un argomento di funzione, sarebbe facile risalire da dove proviene impostando un breakpoint e seguendo lo stacktrace.
Ma se ho una classe ThingFunctions che ottiene una ThingList da OtherThing e la Thing all'interno della lista manca il suo id, di solito finisco per controllare tutti gli usi di Thing.id
, ThingList.add
, OtherThing.setThingList
e più semplicemente per scoprire chi era responsabile per l'impostazione dell'ID.
I punti di interruzione non aiutano molto dato che mi dicono solo dove succede qualcosa, non dove qualcosa non accade.
Ciò richiede ordini di grandezza più lunghi rispetto a uno stacktrace per scoprire perché un argomento è nullo. C'è una soluzione altrettanto semplice per il debug di questo problema? Qualche consiglio generale? Ho un IDE moderno, anche altri strumenti sono ben accetti.