📺 Недавно посмотрел видос на канале Code Opinion про то что Guard Clauses это не очень круто. Тут я конечно озадачился (охуел) потому что я и не знал про такую штуку, а она оказывается уже говно! Поразительная результативность.
Выглядит она вот так:
Guard.Against.NullOrEmpty(userName, nameof(userName))Ну и защищает понятно от чего – от вселенской пустоты текстовых полей. Похожа на Assert. Да и по факту это ассерт, что уж тут. Пихаете его в первых строках контроллера вместо ифчика для проверки ввода.
🅰️ Так вот автор предлагает так не делать. А предлагает более изящную конструкцию – создавать отдельный тип под каждое такое поле. То есть просто создаем класс Username со всеми проверками в конструкторе и пользуемся им. Если что-то не пошло, то система просто не сможет создать класс и выкинет ошибку – просто, понятно и сильнее типизированно.
✅Такой подход я уже видел в использовании. И он мне дико нравится, но я не до такой степени задрот – мне лень такие классы генерить.
Но если бы кто-то замутил кату, оттачивающую создание таких классов, было бы прям неплохо.
#libraries