Pull to refresh

Comments 13

В C# 7 так же можно:


arg = arg ?? throw new ArgumentNullException(nameof(arg));

Я и не говорил, что это лучше. Немного короче. На вкус и цвет...

Короче, только если длина имени переменной arg меньше шести символов.

Интересно было бы послушать об опыте применения AOP техник (а-ля Fody + атрибуты) для "вшивания" проверок в код.

Тут я не подскажу, увы.
Из минусов, которые я слышал от человека, которому достался в наследство подобный проект:


Не всегда отладчик нормально реагирует на подобный код
Исключения часто бросаются из неожиданных мест

В итоге от подобного подхода пришлось постепенно отказываться.

Наплодить ненужных сущностей, а потом решать проблемы перфоманса, которые они породили. Великолепно. Чем «if..then throw» хуже отдельного класса? В чем преимущество?

Все проверки на null, <0 итд отлично генерируются решарпером или свежей студией с расширениями.

shai_hulud, статья не о споре между .Net и Java разными способами проверок. А для тех, кто уже почему-то выбрал способ использования подобного рода Guard, Preconditions и хочет их использовать удобнее.


Я спорить об этом не буду, однако, если ты прав, то ты сможешь убедить владельцев репозиториев удалить следующие два класса:


  • Preconditions из Guava
  • Validation от одного из популярных Open Source разработчиков
Я уже успел поспорить, услышать другие мнения и вообще обсудить Guard классы в этой статье.

Open Source не святой грааль, туда попадают решения с запашком. Мое личное ИМХО что большая часть Open Source это решения с запашком, и только малая часть может быть примером другим разработчикам.

Validation — 39 звезд. meh

Еще раз: есть разные мнения, разные проекты и предпочтения.


Я не спорю, что ты придерживаешься политики отсутствия Guard классов. Я — нет.


Из статьи по ссылке видно, что в разных проектах используются именно разные схемы валидации.


Open Source не святой грааль, туда попадают решения с запашком. Мое личное ИМХО что большая часть Open Source это решения с запашком, и только малая часть может быть примером другим разработчикам.

Я не берусь это оценивать. Раз люди используют решение, значит оно им подходит (или лучше, в сравнении с остальными).
И Google Guava имеет 17к звезд. Если бы действительно Predonditions были бы абсолютно плохими, то их бы удалили. Верно?

>И Google Guava имеет 17к звезд. Если бы действительно Predonditions были бы абсолютно плохими, то их бы удалили. Верно?
Нет не верно. Вот, к примеру, неработающий проект вебсокетов, не поддерживает большие сообщения, кривой логгинг, жуткий мемори трафик и не работает под моно и не поддерживается — 600 звезд которые заработал в первые месяцы. А вот аналог полный фич и работающий — 200 звезд за все время существования. О чем это говорит? Чем известнее разработчик, тем больше звезд. Качество проекта становится вторичным.

По классам с проверками нет единого мнения даже в .NET фреймворке, часть библиотек написано с ними, часть без них. Но я так и не увидел плюсов по сравнению с обычнми проверками. Везде описывается уменьшить минусы.
По классам с проверками нет единого мнения даже в .NET фреймворке, часть библиотек написано с ними, часть без них.

К счастью, это может поменяться — Champion "Method Contracts"

Sign up to leave a comment.

Articles