Roman
если номера нет
ты про то, что 1234 1234 **** 1234 не расрапсится в DigitString? Ok, поменяю
Shub
твои же валидаторы уже чекают доменные типы, что есть проблема, т.к. технически ничего не мешает создать невалидное значение доменного типа, а валидатор можно банально не вызывать
Roman
Shub
поэтому резоннее поменять определение типа так, чтобы невалидное значение невозможно было создать штатными средствами
Shub
Roman
эти валидаторы трансформируют валидные дто в доменные типы, либо возвращают ошибку
Roman
это не те, что кидают исключения в рантайме
Shub
Shub
ничего не смущает?
Roman
трансформируют
Vasily
@atsapura , заметь, ты сам просил тебя выпороть
Roman
я ничего против не имею
Roman
Но хочу, чтобы пороли за дело, а не просто так)
Hog
Roman
тогда терпи!
если чо, я ни к кому тут претензий не имею
Shub
type ValidateCreditCardInfo = CreditCardInfoDto -> Result<CreditCardInfo, ValidationError>
какая роль DTO в этой сигнатуре?
Hog
Shub
например строка 108
Shub
у тебя там комбинаторный взрыв
Vasily
Накапайте дедушке валерьянки
Vasily
И глицерина под язык
Shub
василий, тебе по сути есть что возразить или ты просто хочешь поучаствовать в дискуссии?
Hog
он же противный
Roman
можно конечно одну гигантскую ошибку возвращать на все неправильные варианты с полным текстом правил валидации данных, но это такое
Roman
Ayrat
Да чо вы приебались?)
Shub
что не так с эффективностью?
у тебя уже есть дто, как ты сказал - валидный. ты его зачем-то проверяешь еще раз и конвертируешь, причем исходный и целевой тип практически идентичны.
Hog
Roman
Shub
парси уже тогда транспортный тип, жсон или что там у тебя
Roman
дто может быть валидный и не валидный
x
Roman
если он валидный, я его конвертирую в доменный тип, если нет — возвращаю ошибку.
Ayrat
Присоединяйся!
Не могу, у меня до сих пор пердак горит от той ебанины по мотивам Игры Престолов
Roman
Весь процесс назвал валидацией. Если есть лучшие идеи для нейминга — слушаю
Hog
Vasily
Вообще, конечно, функция validatePaymentMethod выглядит странно
Ayrat
Shub
Shub
Vasily
Ну как по мне, рекорды тут выбраны не совсем удачно
Shub
т.к. валидатор могут и не вызвать
Hog
Roman
все вот эти DigitString, LetterString и тд
Roman
тут просто в добавок есть код, который позволяет эти доменные классы связать с реальным миром
Shub
Hog
Shub
Roman
Roman
и непустота
Sergey
Да просто сломайте ему код и все🌚
Shub
Shub
это просто не выражается типами.
Shub
но перекладывать примитивные типы из одной структурки в другую - это просто приближать тепловую смерть вселенной
Roman
Vasily
Ну рекорды в данном случае порождают нехилую такую простынку матчей
Roman
так это дто. Как по-другому сделать?
Vasily
type PaymentMethod=|CreditCard of CardInfo etc
Hog
x
Но это неточно.
Shub
Shub
это пример был
Shub
ясно, что для банковских переводов будут другие правила
Vasily
Я бы для ясности все же по модулям разносил
Vasily
Для начала