Информация об изменениях

Сообщение Re: Про типы и логику от 25.02.2015 12:32

Изменено 25.02.2015 12:33 GreenTea

Здравствуйте, Mamut, Вы писали:

M>Выношу из соседнего обсуждения
Автор: Mamut
Дата: 02.02.15
, так как там много флейма и отсутсвие конструктива.


M>Мне просто действительно интересно. Многие утверждают, что типы помогают (чуть ли не) во всем, вплоть до того, что «тайпчекер проверяет именно логику».


Всю ветку не читал. Лично для меня напрашивается решение с применением rule engine типа drools.
Каждое правило (дальше рул) проверяет одну ошибку. Из рула можно вызвать внешний код которые будет лезть куда-то на внешний сервис, если нужно.
На вход подается объект заказа и новое значение суммы.
Плюсы такого подхода:
+ декларативный синтаксис рулов в виде: список условий -> результат
+ возможность для рулов задать свой синтаксис (некий DSL), так что он будет понятен человеку из бизнеса, и далекого от IT. Хотя это не всегда может быть просто.
+ возможность подключить внешний веб редактор для рулов и менять их хоть даже на лету.
Минусы:
— поморочиться придется чуть больше чем написать всю логику в коде.

Каждый из рулов можно покрыть юнит тестами если что.
Здравствуйте, Mamut, Вы писали:

M>Выношу из соседнего обсуждения
Автор: Mamut
Дата: 02.02.15
, так как там много флейма и отсутсвие конструктива.


M>Мне просто действительно интересно. Многие утверждают, что типы помогают (чуть ли не) во всем, вплоть до того, что «тайпчекер проверяет именно логику».


Всю ветку не читал. Лично для меня напрашивается решение с применением rule engine типа drools.
Каждое правило (дальше рул) проверяет одну ошибку. Из рула можно вызвать внешний код которые будет лезть куда-то на внешний сервис, если нужно.
На вход подается объект заказа и новое значение суммы.
Плюсы такого подхода:
+ декларативный синтаксис рулов в виде: список условий -> результат
+ возможность для рулов задать свой синтаксис (некий DSL), так что он будет понятен человеку из бизнеса, и далекого от IT. Хотя это не всегда может быть просто.
+ возможность подключить внешний веб редактор для рулов и менять их хоть даже на лету.
Минусы:
— поморочиться придется чуть больше чем написать всю логику в коде.

Каждый из рулов можно покрыть юнит тестами.