Size: a a a

2021 April 14

VA

Vagif Abilov in F# Chat
Ну можно и не просто держать идею в уме, а применять с умом, например, избегая типов String50 для адреса, а заводя тип Address
источник

VS

Vladimir Shchur in F# Chat
имеешь ввиду address который покрывает единственный примитив со стрингом с валидацией длины? ну это зависит от его переиспользуемости в кодобазе, если он просто всегда живет внутри другого объекта и в базу хоронится, я бы не создавал отдельный тип, а оставлял бы примитив или unit of measure. Валидация будет не на создании адреса, а на создании всего родительского объекта
источник

I

IdiocyAcceptance in F# Chat
При таком подходе ты не сможешь защищённо юзать рекорды те же
источник

I

IdiocyAcceptance in F# Chat
Что тогда помешает тебе сделать let data = { data with Address = "bullshit" }
источник

VS

Vladimir Shchur in F# Chat
код ревью?) если адрес отдельно не используется, то такой код и не должен существовать
источник

I

IdiocyAcceptance in F# Chat
Ну, про код ревью это понятно) Вопрос же был построен иначе (на сколько я понял) - как на уровне системы типов и компилятора защититься от ошибок
источник

VS

Vladimir Shchur in F# Chat
так в экстремуме это не работает, надо всегда искать золотую середину)
источник

VS

Vladimir Shchur in F# Chat
по-моему это вообще путь фарша - "срединный"
источник

VS

Vladimir Shchur in F# Chat
можно рекорды вообще не юзать, юзать классы с конструктором
источник

g

gsomix in F# Chat
Сайм бы сказал, что для обеспечения инвариантов нужно использовать объекты.
источник

VS

Vladimir Shchur in F# Chat
кстати мб есть пропоузал на то чтобы разрешит запрещать with рекордам
источник

VS

Vladimir Shchur in F# Chat
а не, ерунду предложил) все равно можно рекорд невалидный создать всегда) да, класс с конструктором идеально подходит
источник

I

Igor in F# Chat
Короче встроенные типы в бизнес логике - это зло?
источник

VA

Vagif Abilov in F# Chat
Unit of measure - тоже нормально и быстрее, но это уже детали реализации
источник

VA

Vagif Abilov in F# Chat
Не был бы так категоричен, но в целом имеет смысл бизнес-типы защищать.
источник

P

Pavel in F# Chat
А в чем проблема с string50? я не агитирую за него, мне просто всё ещё хочется понять мотивацию отрицания такого кейса..
источник

VK

Vladislav Khapin in F# Chat
если сильно хочется то можно через UMX сделать, там хотя бы весь этот типовой мусор вырежет плюс минус
источник

P

Pavel in F# Chat
Влашин доносит простую понятную и хорошую идею - чтоб невалидные состояние были непредставимы. Что пытаются донести противники подхода? Кроме - не дела так, так плохо..
источник

VK

Vladislav Khapin in F# Chat
а так это часто просто онанизм валидации
источник

P

Pavel in F# Chat
То есть мысль противников - не делать так слишком часто, доводя идею до абсурда? Если так, то ок
источник