2015-09-18 11 views
5

Abbiamo un'API interna scritta in C# in cui molti metodi hanno valori di ritorno, in genere bool o int, che a volte i chiamanti ignorano. I valori di ritorno sono lì per un motivo, ad es. Per indicare un problema o un risultato di qualche tipo, quindi vogliamo incoraggiare i chiamanti a controllare effettivamente il risultato piuttosto che a credere che il metodo abbia funzionato come previsto, solo che le cose vanno male più a valle.Visual Studio: esiste un modo per generare un avviso se non si verifica un valore restituito?

Esiste un modo per utilizzare il compilatore di Visual Studio per imporre il controllo dei valori di ritorno contrassegnando le chiamate, utilizzando un avviso o un errore, quando un chiamante non riesce a verificare il valore restituito di un metodo non vuoto?

+0

Si potrebbe fare qualcosa di super stupido e utilizzare i parametri 'out' ovunque. –

+6

Sembra che stiate restituendo i codici di errore. Perché non stai usando le eccezioni per indicare gli stati falliti? –

+0

Forse strumenti come StyleCop o FxCop potrebbero aiutare? Non li ho usati personalmente, ma presumo che potrebbe essere un buon caso per quei due. – jjczopek

risposta

4

Se si vuole incoraggiare le pratiche migliori, utilizzare le eccezioni. Questo renderà almeno consapevoli che qualcosa sta accadendo se semplicemente trascurassero di fare qualsiasi cosa. Se seppelliscono l'eccezione, la seppelliscono. Ma richiede una decisione attiva per farlo.

In pratica ogni volta che il codice può andare "Sono in un punto in cui c'è un problema e la soluzione è assente o ambigua" è quando lanciare.

Oltre a generare eccezioni, quando si restituisce il controllo al chiamante, non c'è nulla di programmatico che si possa fare per far rispettare ciò che fa in seguito.

+0

Non è sempre meglio lanciare un'eccezione. Ad esempio, tutti i metodi .TryParse (int.TryParse()) non generano un'eccezione quando l'input non può essere analizzato in un int. La maggior parte delle volte yoiu dovrebbe controllare se l'analisi ha avuto successo, ma in alcune circostanze l'is non lo è. ad esempio quando il valore predefinito del risultato è il valore necessario quando l'input non può essere analizzato – Luc

+0

L'uso di TryParse ha senso se si ha l'aspettativa che potrebbe non riuscire e disporre di un piano di backup (ad esempio, un valore predefinito) . Tuttavia, se altre persone chiamano il tuo codice e non vuoi la responsabilità di gestire un valore di input non valido, è ancora più utile usare semplicemente Parse e lasciare che l'eccezione diventi una bolla al chiamante. – SaxxonPike

2

C'è già è un compilatore di allarme per questo, [MSDN] [1]

[1]: https://msdn.microsoft.com/en-us/library/ms182273.aspx è di utilizzare FX poliziotto

+0

Questo pretende di controllare solo oggetti o HRESULT, quindi se si restituisce un int plain non sembra che funzionerebbe. –

+0

mentre questo risponde alla domanda degli utenti, non dovrebbe essere la pratica di dire al codice chiamante qualcosa di brutto/inaspettato accaduto –

Problemi correlati