In base al frame che hai fornito, è difficile discutere quelle di per sé:
try {
SomeMethod();
} catch (SomeException e) {
// here e is unused, but during debug we can inspect exception details
DoSomethingAboutIt();
}
Prendi questo ad esempio. Stai rilevando un'eccezione e (forse) hai un codice che tratta l'eccezione in modo corretto. Il fatto che non si stia utilizzando l'istanza effettiva dell'eccezione non nuoce, né al flusso di codice né alla comprensibilità.
Ma ciò che mi fa pensare è quando scrivi sulla legittimazione di »variabili inutilizzate«
In fact, some of them even help in debugging
Questo non è lo scopo della scrittura del codice: dover eseguire il debug in un secondo momento. Per evitare malintesi, devo dire che, lo so bene, spesso devi correggere il tuo codice; e a volte debug è la soluzione. Ma non dovrebbe essere il primo, quello che ti viene in mente, quando scrivi il codice, che lasci "punti di ancoraggio", il cui unico scopo è rendere il debug più facile.
SomeClass Func() {
// ...stuff...
var ret = FinalComputationResult(thing, foo, bar);
// ret is unused, but while debugging allows checking return value.
return ret;
}
Qui dipende da quanto è complesso stuff
e da come è correlato al valore, che viene restituito.
Come "regola d'oro", direi quanto segue:
If it helps understanding the purpose of the code, it is okay to incease redundancy in your code
o per dirla diversamente:
Write your code as redundancy free as is necessary to understand later easily, what the code is doing
Il risultato è: La maggior parte delle volte, dovresti rimuovere "debug" -variabili .