«Проверка, которая может вызвать исключение» - Соглашение об именах и семантика - PullRequest
1 голос
/ 05 января 2011

Если вы проверяете что-то в коде, вы можете либо работать с возвращаемым значением , указывающим, что что-то не так, либо вы можете вызвать исключение .В моем контроллере у меня есть Исключительная проверка, как это:

 void DoSomething()
 {
     Validate();  // throws exception if something is wrong
     .....
 }

Интересно, существует ли общее соглашение об именах, которое подразумевает, что исключение выдается, когда что-то не так, поэтому мне не нужно добавлять комментарий// throws exception if something is wrong и отличается от if (!IsValid())

Примечание: соглашения о присвоении имен не отвечает на мой вопрос.

Обновление после принятия ответа: ЧтоИз этого вопроса я узнал

  • AssertValid () или VerifyAndThrow () - это хорошие имена (tnx @hacktick)
  • Проверка должна отличаться контекстом (предупреждение или ошибка)
  • Исключительная проверка хороша как своего рода Контракт или вторая линия защиты, которая может существовать только в режиме отладки, чтобы гарантировать, что окружающие if (IsValid(...)) не пропустят что-либо (tnx @ Cody Grey)

1 Ответ

2 голосов
/ 05 января 2011

Как правило, вы будете использовать:

// for a validations that returns just plain yes no (true|false). in the case of a property use caching for the last validationresult.
bool IsValid

// for a validation that returns a list of errors of some sort (messagelist, id list, custom objects, whatever you need).
object Validate();

// validates and throws an exception if one or more error occured.
void ValidateAndThrow();

Также обязательно подумайте, нужны ли вам какие-либо предупреждения.Например, если вы проверяете модель регистрации DTO и хотите предупредить пользователя, если пароль слабый, но не хотите помешать пользователю сохранить его, если он выберет.

...