Jul. 28th, 2010

metaclass: (Default)
Что-то чем дальше я копаюсь с кодогенерацией и метапрограммированием, тем больше мне кажется обоснованной точка зрения [livejournal.com profile] plumqqz насчет ООП как мозгового слизня.

Т.е. вообще я изучаю аспект, нельзя ли упростить работу с ORM, вынеся всю логику по обработке маппингов на этап компиляции программы, чтобы в готовой программе был сгенерированный код по работе с БД. Кроме того, мне нужна возможность в некоторых местах использовать вместо БД текстовые файлы, т.к. я хочу хранить некоторые части данных под системой контроля версий.

И вот как только я пытаюсь выйти за пределы реляционной модели и оберток для SQL, т.е. прикрутить какую-нибудь объектность, вложенные коллекции, графы и прочее - начинается теоретический ад, что с маппингами в БД, что с сериализацией в текст.

Реляционная модель явно отраженная на структуру программы (т.е. все объекты которые там есть - POCO с полями-значениями, никаких коллекций и ссылок) +некоторое количество осмысленного сгенеренного кода вроде "FindByPrimaryKey" и методов-оберток вокруг CRUD-операций, выглядит намного гуманнее, чем заворачивание всего в объекты с вложенными коллекциями, ленивыми-неленивыми ссылками, всякими one-to-many и наоборот отношениями.

В тех местах, где действительно нужно работать сразу с записью и ее подчиненными - проще по информации о внешних ключах сгенерить обертку типа "SelectChildren" и вызывать ее руками, нежели пропускать это через десять слоев генерящихся на ходу проксей и виртуальных методов, типа как в NHibernate.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 04:27 am
Powered by Dreamwidth Studios