Entry tags:
Бизнес-логика: Структура данных vs код
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Самое ужасное там - это когда структуре данных отказывают в праве считаться частью бизнес-логики, упирая на то, что "надо же абстрагироваться от хранилища".
При этом, даже если добится этого абстрагирования - то все равно структура данных будет в памяти, в виде графа объектов, будет нужен дополнительный код по интеграции этой структуры с тем, что живет в БД, и никуда мы от структуры данных не денемся. А уж про то, можно ли считать констрейнты (в т.ч. и сложные, выражаемые только в виде триггеров) частью типов данных - можно дискутировать вечно. По крайней мере, check и foreign key constraints это точно часть типа данных, в случае FK - это еще и зависимые типы, реализованные в понятном виде. В случае unique constraints - уже сложнее, но по идее, тоже зависимый тип (зависит от данных таблицы, в которой он используется).
Так вот, я считаю, что структура данных для бизнес-логики гораздо более важна, чем собственно код. Если вам скажут, что теперь операция с кодом "777029" не облагается НДС - вам всего лишь нужно добавить веточку в паттерн-матчинг. Структура программы от этого не изменится и коллегам вы билд нахрен не сломаете.
А если окажется, что для того, чтобы узнать, как обрабатывается операция, вам нужно заглянуть в настройки в СУБД - то внезапно, в гламурно-причесанной функционально-иммутабельной функции проверки условий появляется грязная монада IO, провайдеры коннектов к БД, автоматическое управление транзакциями, пул коннектов, кэши и прочая черняга и структура данных (к коей я отношу так же и сигнатуры функций) меняется весьма заметно. Альтернативный вариант - оставить функцию чистой, но добавить к ней еще параметров, передаваемых извне, проверить код коллег, записать в трекер и рассказать, что теперь без передачи в нее оккультного набора параметров функция больше не заработает.
no subject
no subject
no subject
Да, и со всякими разными монгаДБ целостность данных мы тоже выбрасываем? :)
no subject
no subject
no subject
Мы будем этот закат солнца делать вручную?
Только не говорите. что если мы положим магическую базу магические объекты, на этом работа закончится. Я еще раз скажу всеми нелюбимое изречение: это все хорошо только для ограниченного круга ну очень простых задач.
no subject
no subject
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(Anonymous) - 2012-10-22 08:35 (UTC) - Expand(no subject)
(no subject)
no subject
no subject
no subject
Фигушки. Так или иначе, это будет упрощено, никто возиться до такой степени глубины с данными не станет, и сделают все упрощенно, а значит - убого.
(no subject)
no subject
Мы за внешние ключи все еще говорим?:)
(no subject)
no subject
no subject
no subject
- запишитесь на массаж простаты и какие-нибудь более-менее грамотные курсы типа повышения квалификации, если есть таковые поблизости.
no subject
no subject
а "кодингом" нехай специальные мартышки занимаются.
no subject
no subject
не говоря о редкомозглых програмерах.
- какой "кодинг". только шпуксы, админство и наркоманский хардкор.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
вы что, по начальственному страпону дома тоскуете, ась?
no subject
Да и задача мигрировать что угодно куда угодно вообще исключительная. Иметь интерфейсы к чему угодно - да, довольно часто. (НЕНАВИЖУ ИБМ! "Наш продукт работает только с DB2 v9.7 fp5" ааааааааа! и одмины идут к закащегу ипаццо с апдейтами)