Domanda

I comunemente metto in valori variabili che vengono utilizzati solo una volta dopo l'assegnazione. Faccio questo per rendere più conveniente il debug più tardi, come sono in grado di passare il valore da una linea in cui è in seguito utilizzato.

Ad esempio, questo codice non consente di passa il valore della getFoo ():

return GetFoo();

Ma questo codice fa:

var foo = GetFoo();
return foo; // your hover-foo is great

Questa odori molto YAGNI -esque , come funzionalità del foo 'assegnazione s non sarà mai essere utilizzati fino a quando qualcuno ha bisogno di eseguire il debug il suo valore, che possono mai accadere . Se non fosse per il solo previsto sessione di debug, il primo frammento di codice di cui sopra mantiene il codice più semplice.

Come si scrive il codice per miglior compromesso tra semplicità e facilità d'uso debugger?

È stato utile?

Soluzione

Non so su altri debugger, ma il debugger di Visual Studio integrato riferirò ciò che è stato restituito da una funzione nella finestra "Autos"; una volta che passo sopra l'istruzione return, il valore di ritorno si presenta come "[nome della funzione] restituito" con un valore di qualsiasi valore è stato restituito.

gdb supporta la stessa funzionalità pure; il comando "finire" esegue il resto della funzione attuale e stampa il valore di ritorno.

Trattandosi di una caratteristica molto utile, sarei sorpreso se la maggior parte degli altri debugger ha non supporta questa funzionalità.

Per quanto riguarda il più generale "problema" di "debugger-uniche variabili," sono davvero debugger sola? Tendo a pensare che l'uso di variabili temporanee ben nome-può migliorare significativamente la leggibilità del codice pure.

Altri suggerimenti

Un'altra possibilità è quella di imparare la programmazione assembly sufficiente che si può leggere il codice il compilatore genera. Con questa abilità, si può capire dove si sta tenendo il valore (in un registro, in memoria) e vedere il valore senza dover memorizzare in una variabile.

Questa abilità è molto utile se si è mai bisogno di eseguire il debug di un file eseguibile ottimizzato. L'ottimizzatore può generare il codice che è significativamente diverso da come l'avete scritto in modo tale che il debug simbolico non è utile.

Un altro motivo per cui non è necessario variabili intermedie nel debugger di Visual Studio è che si può valutare la funzione nella finestra di controllo e la finestra immediata. Per la finestra di controllo, semplicemente evidenziare la dichiarazione che si desidera valutati e trascinarlo nella finestra.

direi che non vale la pena preoccuparsi. Dato che non c'è in testa runtime nel caso tipico, impazzire. Penso che abbattere istruzioni complesse in più semplici dichiarazioni di solito aumenta la leggibilità.

Vorrei lasciare fuori l'assegnazione fino a quando non è necessario . Se non avete mai capita di essere a quel po 'di codice, che vogliono uno sguardo a quella variabile, non si è ingombra il codice inutilmente. Quando si esegue attraverso la necessità, metterlo in (dovrebbe essere un banale Estrai Variabile refactoring). E quando hai finito con quella sessione di debug, sbarazzarsi di esso ( Inline Variable ). Se vi trovate di debug così tanto - e così tanto in quel particolare punto - che sei stanco di refactoring avanti e indietro, poi pensare a modi per evitare la necessità; forse di più test di unità aiuterebbero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top