Hog
Вот вы тут понаписали!
Hog
Можете поздравить - я теперь отец студентки :)
Doge
еще один профит интерпретатора: можно встраивать легко воркфлоу в воркфлоу. https://github.com/atsapura/CardManagement/commit/3e208305124374f773f580f615a5f1a0c12f78cd
У этого подхода, есть один важный недостаток только. В среднем энтерпрайзе он, конечно не особо прям критичен, но помнить нужно: будет аллокаций дофига
Roman
И надеяться, что стек не пробьет)
Shub
очень странное понятие “легко”. ты руками эти строчки извлекал или в эфшуруп extract method завезли?
Hog
😂😂😂👍
Hog
Мы его потеряли?
Shub
и еще момент по именованию. getCardOrNotFoundError - достаточно getCard, по аннотации типов и так понятно, что вернется
Shub
tryGetCard
Shub
member this.Value = match this with Money money -> money
Shub
у тебя несколько опечаток в op_Explicit
Shub
вообще, когда сюда постили Quantity и прочие NonNegativeDecimal - это был пример, как не надо делать
Roman
Money, money, money Must be funny
Roman
вообще, когда сюда постили Quantity и прочие NonNegativeDecimal - это был пример, как не надо делать
мы уже это обсуждали. У меня тут нет конфликтующих операций и валидации
Shub
ну тип для денег - это правильно. насчет операций не уверен. у тебя может быть -1 доллар, например
Shub
чего в реальном мире не наблюдается
Roman
задолжность на счету?
Shub
отрицательный баланс. но не деньги
Roman
можно его переименовать в баланс, ок
Shub
в чем разница между Money и MoneyTransaction?
Vasily
Есть transaction
Vasily
По идее
Roman
MoneyTransaction с положительным значением внутри. Имя не самое удачное, но не придумал лучше
Vasily
На определенную сумму
Roman
можно конечно просто PositiveMoneyAmount
Ilya
А потом ещё и в транзакцию завернуть, шоб по ддд было!
Roman
ну цель-то не упороться, а сделать хорошо
Vasily
Сделать хорошо просто Sum
Shub
ты там сделал валидаторы с Result. a где аппликативы?
Roman
я намекаю, что это лишняя сущность
мне нужна валидация, чтобы не было платежей и пополнений баланса с отрицательным значением
Shub
ты можешь иметь валидацию, не вижу проблем
Roman
она должна быть консистентной и на типах.
Shub
что в твоем понимании “консистентна”?
Roman
быть такой же, как в других местах
Roman
единообразно что было
Shub
сейчас можно складывать Money и MoneyTransaction, а MoneyTransaction и Money нельзя. это консистентность?
Shub
че, впадлу моноид сделать было?
Roman
не пришло в голову. Покажи кот!
Shub
единообразно что было
foolish consistency is a hobgoblin of little minds
Shub
https://github.com/atsapura/CardManagement/blob/master/CardManagement.Common/CommonTypes.fs#L76
Shub
тебе скорее надо Transaction of Money тип и операции над этим типом
Roman
почему?
Ayrat
Можете поздравить - я теперь отец студентки :)
Ничоси! поздравляю с приобритением student loan!!11
Shub
почему?
потому что замахаешься определять методы, чтобы сделать сложение. а потом еще и умножение захочется
Shub
проценты, все дела
Roman
дык а какая разница, они будут либо в одном либо в другом типе определены
Roman
код никуда не денется
Shub
проще определить математику на Money, а на Transaction of Money определить только то, что релевантно для Transaction
Shub
дык а какая разница, они будут либо в одном либо в другом типе определены
разница в том, что тулинг для эфшарп скудный, и разнося их по разным местам ты и это немногое делаешь неюзабельным
Hog
Ничоси! поздравляю с приобритением student loan!!11
Даже если и брать - я буду только косайнером
Hog
Shub
теперь другой вопрос: чем тебя не устраивает штатный Result<>?
Shub
у тебя есть Ok и кастомный Error
Roman
какой кастомный эррор?
Roman
тип, который в себе ошибки описывает чтоль?
Shub
https://github.com/atsapura/CardManagement/blob/master/CardManagement.Common/Errors.fs#L44
Roman
в чем проблема? Я и так использую стандартный резалт
Shub
ты ж мог иметь Ok ‘a и Failure ErrT’
Roman
Result<'a, Error>
Shub
Result<'a, Error>
есть штатный active pattern
Shub
а тебе свой придется писать
Roman
кинь ссылку, я пока не понимаю о чем ты
Ayrat
вечерняя битва двух йокодзим
Roman
присоединяйся!
Ayrat
вы бы уже облобызались, я не знаю
Ayrat
месяц прайда же
Ayrat
в дублине уже в центре без радуги шагу не ступишь
Ayrat
даже мороженое разноцветное продают