Я использую Code Contracts в C#, но мне немного любопытно, что я должен вводить для параметра userMessage
. Приведу небольшой пример.C# Code Contracts userMessage Параметр
У меня есть следующее утверждение в моем коде:
Contract.Assert(IsValidReferenceData(refData));
Это сообщение не будет отображаться пользователю, но было бы неплохо иметь английское описание сообщения в исключениях для себя и других разработчиков/поддерживающих программное обеспечение.
Первоначально я думал
Contract.Assert(IsValidReferenceData(refData), "Payment Reference is not valid");
Но потом я подумал, что userMessage
является полной противоположностью к булеву состоянию, поэтому я переписал его как:
Contract.Assert(IsValidReferenceData(refData), "Payment Reference is valid");
Поэтому сообщение и условия являются одна и та же. Однако это может смутить людей, когда они видят отчет об исключениях, а затем подумают: «Держитесь, если ссылка действительна, то почему было выбрано исключение?».
Наконец, я мог бы подумал, почему бы не сделать нейтральное заявление, в котором говорится, что должно быть правдой:
Contract.Assert(IsValidReferenceData(refData), "Payment Reference must be valid");
Какой из вышеперечисленного является лучшей практикой? Я хочу получить правильные сообщения, потому что я планирую использовать утверждения повсюду, чтобы предотвратить нарушения в данных, и для этого я позволяю проверять время выполнения.