Comments 13
В C# 7 так же можно:
arg = arg ?? throw new ArgumentNullException(nameof(arg));
Интересно было бы послушать об опыте применения AOP техник (а-ля Fody + атрибуты) для "вшивания" проверок в код.
Все проверки на null, <0 итд отлично генерируются решарпером или свежей студией с расширениями.
shai_hulud, статья не о споре между .Net и Java разными способами проверок. А для тех, кто уже почему-то выбрал способ использования подобного рода Guard, Preconditions и хочет их использовать удобнее.
Я спорить об этом не буду, однако, если ты прав, то ты сможешь убедить владельцев репозиториев удалить следующие два класса:
- Preconditions из Guava
- Validation от одного из популярных Open Source разработчиков
Open Source не святой грааль, туда попадают решения с запашком. Мое личное ИМХО что большая часть Open Source это решения с запашком, и только малая часть может быть примером другим разработчикам.
Validation — 39 звезд. meh
Еще раз: есть разные мнения, разные проекты и предпочтения.
Я не спорю, что ты придерживаешься политики отсутствия Guard классов. Я — нет.
Из статьи по ссылке видно, что в разных проектах используются именно разные схемы валидации.
Open Source не святой грааль, туда попадают решения с запашком. Мое личное ИМХО что большая часть Open Source это решения с запашком, и только малая часть может быть примером другим разработчикам.
Я не берусь это оценивать. Раз люди используют решение, значит оно им подходит (или лучше, в сравнении с остальными).
И Google Guava имеет 17к звезд. Если бы действительно Predonditions были бы абсолютно плохими, то их бы удалили. Верно?
Нет не верно. Вот, к примеру, неработающий проект вебсокетов, не поддерживает большие сообщения, кривой логгинг, жуткий мемори трафик и не работает под моно и не поддерживается — 600 звезд которые заработал в первые месяцы. А вот аналог полный фич и работающий — 200 звезд за все время существования. О чем это говорит? Чем известнее разработчик, тем больше звезд. Качество проекта становится вторичным.
По классам с проверками нет единого мнения даже в .NET фреймворке, часть библиотек написано с ними, часть без них. Но я так и не увидел плюсов по сравнению с обычнми проверками. Везде описывается уменьшить минусы.
По классам с проверками нет единого мнения даже в .NET фреймворке, часть библиотек написано с ними, часть без них.
К счастью, это может поменяться — Champion "Method Contracts"
Пишем Guard