Re[20]: роль ООП при работе с данными
От: IB Австрия http://rsdn.ru
Дата: 28.11.08 10:38
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Предлагаю оставить Майка с ВВ обсуждать правильное разграничение репозитория и модели, а также способы сохранить жирность модели путём выноса всех ссылок в отдельные сущности доменной модели.

S>Мой ахтунгометр зашкалило еще 50 постов назад, поэтому я ставлю автопометку на эту тему.
+1
У меня вообще настойчивое желание полтемы в юмор сненсти, так как на трезвую голову эту кашу разгребать у меня никаких сил нет, а так, чисто поржать... ))
... << RSDN@Home 1.2.0 alpha rev. 673>>
Мы уже победили, просто это еще не так заметно...
Re[20]: роль ООП при работе с данными
От: Mike Chaliy Украина http://chaliy.name
Дата: 28.11.08 10:38
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

ВВ>>>А по поводу — "полиморфизм классов" и "родовые отношения". Что конкретно непонятно?
IB>>Конкретно непонятно, что эти термины означают и что ты вообще имеешь ввиду, когда говоришь "объектно-ориентировано".
S>Я короче понял, Ваня. Тут пришли два мега-гуру архитектуры.

Я думал у вас запрещено переходить на личности...
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
Re[7]: роль ООП при работе с данными
От: Mike Chaliy Украина http://chaliy.name
Дата: 28.11.08 10:38
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Mike Chaliy, Вы писали:


IB>>>Это совершенно отдельный самостоятельный юз-кейс и логично, что под него нужен отдельный набор данных, тем более, что в этом наборе вполне себе переиспользуются структуры созданные ранее, под другие задачи.

MC>>Нет, например глупо выгружать на клинет внутренние айдишники оредер айтемов (тех что от ордера)? Да и вы сами дальше говорите про таймстампы. Или у вас в "стройной" моделе будут еще и таимстампы? И вообще что это за фишка внутреннюю модель системы показывать как публичный контракт?
S>Откуда взялась внутренняя модель?
S>Речь идет о построении внешней модели под конкретный случай. Да, мы изобретаем специальный DTO "Ордер с айтемами" и отдаем его.
Вы говорити про переиспользование сущностей "стройной" модели для пердачи данных. Мне с этим сложно согласиться, так как сущности модели в 98% случаев отличаються от того что хотелось бы передать. "Внутрення" модель — это ваша стройная модель, и меня удивляет что вы ее все время пихаете во внешник контракт.

MC>>Типа для изменениня бизнеспроцеса поменть версию публичного контракта? Ндя.

S>А как вы хотели? Если реальность поменялась?
Я хочу чтобы контракт менялся только тогда когда это нужно, а не тогда когда поменялась бизнес логика.

MC>>Ну и казалось причем тут РЕСТ и синхронизация?

S>При том, что в РЕСТ нет проблемы сверхжесткости контракта, придуманной идиотами-авторами SOAP. Контракт в REST легко расширять обратно совместимым образом.
Судя по всему "мега-архитект" не вкурсе что в SOAP нет ни слова про сверхжесткость контракта данных. SOAP вообще глубоко ложить на то что вы передадите в боди. Даже вебсервисы асп.нет потдерживают этот режим... По ходу, все тоже самое справедливо и для РЕСТ... И никак оно проблемы сложных ДТО не решает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
Re[21]: роль ООП при работе с данными
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.11.08 11:52
Оценка: :)
Здравствуйте, Mike Chaliy, Вы писали:
MC>Я думал у вас запрещено переходить на личности...

Ну, я надеюсь, что по старому знакомству Иван меня простит за "сынка".
Но если чего — юлить и ломаться не буду, честно выдержу наложенный бан.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[28]: роль ООП при работе с данными
От: Воронков Василий Россия  
Дата: 28.11.08 12:41
Оценка: -1 :)
Здравствуйте, Sinclair, Вы писали:

ВВ>>>Save в БД тоже во всем том же отдельном лаере.

IB>>Нет уж, ты от темы не увиливай, ты двавай за свои слова отвечай.
IB>>Куда пихать второй Save, если первый не в отдельном?
S>Это он так витиевато пытается донести вот такой простой пример:

Я вам "так витиевато" пытаютсь донести то, что вообще-то предлагается в той самой концепции, которую вы критикуете. Но судя по реакции — это для вас в новинку
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[21]: роль ООП при работе с данными
От: AndrewJD США  
Дата: 28.11.08 13:09
Оценка:
Здравствуйте, IB, Вы писали:

S>>Мой ахтунгометр зашкалило еще 50 постов назад, поэтому я ставлю автопометку на эту тему.

IB> +1
IB>У меня вообще настойчивое желание полтемы в юмор сненсти, так как на трезвую голову эту кашу разгребать у меня никаких сил нет, а так, чисто поржать... ))

Да ладно вам, поржать... Когда приходится разгребать все прелести жирного ООП в реальном проекте — совсем несмешно.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[2]: причины
От: Аноним  
Дата: 28.11.08 16:29
Оценка:
Есть свой Framework для разработки приложений для конкретной предметной области.
С достаточно удобной объектной моделью. (MVC, Tools, Commands, Document, Views, Panels, фабрика GUI и т. п.)

Для работы с БД используем ORM.

Для передачи данных WebServices. Они поверх Windows-Service'ов. Кое что написано с использованием C/C++.

Использовали ClickOnce для обновления — збили, написали своё.
Re[3]: причины
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.11.08 18:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть свой Framework для разработки приложений для конкретной предметной области.

А>С достаточно удобной объектной моделью. (MVC, Tools, Commands, Document, Views, Panels, фабрика GUI и т. п.)

А>Для работы с БД используем ORM.


А>Для передачи данных WebServices. Они поверх Windows-Service'ов. Кое что написано с использованием C/C++.


А>Использовали ClickOnce для обновления — збили, написали своё.


Ваша компания не Microsoft называется?

Обычно дороговато выходит создание своих велосипедо в таком количестве.
Общество обиженых анемистов
От: Mike Chaliy Украина http://chaliy.name
Дата: 28.11.08 20:50
Оценка: -1 :))
Здравствуйте, AndrewJD, Вы писали:

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


S>>>Мой ахтунгометр зашкалило еще 50 постов назад, поэтому я ставлю автопометку на эту тему.

IB>> +1
IB>>У меня вообще настойчивое желание полтемы в юмор сненсти, так как на трезвую голову эту кашу разгребать у меня никаких сил нет, а так, чисто поржать... ))

AJD>Да ладно вам, поржать... Когда приходится разгребать все прелести жирного ООП в реальном проекте — совсем несмешно.


"Общество обиженых анемистов"

УСТАВ

1. Общие положения


• 1.1. "Общество обиженых анемистов" является общественной организацией (некоммерческой общественной организацией), включающей в себя на принципах добровольного участия сторонников анемичных моделей.
• 1.2. Общество обладает собственным уникальным мнением как надо писать програмы.
• 1.3. Общество являеться прямым конкурентом компании 1С, с ее програмным обеспечением 1С Предприятие 8.0.
• 1.4. Общество руководствуется своим пониманием принципов програмирования. В случае отсутвия общепризнаных принципов, общество обязуеться приитянуть что нибуть за уши.


2. Цели, задачи и методы Общества


• 2.1. Основной целью Общества является защита анемичной модели от поясгательств других моделей.
• 2.2. Разработка и внедрение программ, формирующих анемичное мировоззрение;
• 2.3. Для осуществления вышеперечисленных задач Общество планирует применять следующие методы:
— сбор информации про недостатки в других моделях;
— организацию подрывной деятельности в других моделях;
— повсемесном продвижении ДатаСетов как идеальной анемичной модели;
— распространиение информации про потерянные годы работы с дургими моделями;
— публичное сжигание книг по архитектурам корпоративных приложений;

3. Права Общества


• 3.1. Общество имеет четкую неопределенную структуру, в кторой найдеться место любому пострадавшему от ига других моделей.
• 3.2. Общество вправе заниматься распространиением ДатаСетов.
• 3.3. Члены общества не имеют права использвать методы в своих сущностях.
• 3.3. Члены общества должны принимать что наличие атрибутов в классе уже достаточная отвественность. Наличие мтодов тоже.


4. Членство в Обществе


• 4.1. Членом Общества может стать любое лицо, достигшее 18 лет, принимающее его Устав, в той или иной форме обиженное представителями других моделей.
• 4.2. Заявки от индусов с прямолинейным анемичным мышлением рассматриваються в первую очередь.


5. Контроль за деятельностью Общества


• 5.1. Контроль за членами возлагаеться под неусыпное бдение руководства. Основным предметом контроля являються методы в сущностях модели.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
Re[21]: роль ООП при работе с данными
От: Воронков Василий Россия  
Дата: 28.11.08 23:30
Оценка:
Здравствуйте, Mike Chaliy, Вы писали:

MC>Я думал у вас запрещено переходить на личности...


А ты сам бы смог доказать преимущества анемичной модели без перехода на личности?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[22]: роль ООП при работе с данными
От: Mike Chaliy Украина http://chaliy.name
Дата: 28.11.08 23:55
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

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


MC>>Я думал у вас запрещено переходить на личности...


ВВ>А ты сам бы смог доказать преимущества анемичной модели без перехода на личности?


Все кроме "не будем показывать пальцом" понимают, что во всех моделях есть плюсы и минусы. Все зависит тока от разработчка. Если есть два разработчика с приблизительно равным експириенсом, но в разных моделях, то никто друг друга не переубедит, это просто не реально. Обе модели решают одни и теже задачи, и обе с этим справляються.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
А тут я живу и пишу...
Re[4]: причины
От: Аноним  
Дата: 29.11.08 10:51
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Ваша компания не Microsoft называется?


G>Обычно дороговато выходит создание своих велосипедо в таком количестве.


Нет. Не Microsoft. Просто существующие наработки, не важно кого,
нам не подходят — слишком специфична предметная область.

Поначалу дороговато, потом на конвейер поставлено всё в виде плагинов.
Клепаем один за одним. Не боимся за то, что столкнёмся с трудностями и
всё лаконично и гармончно выходит.

Вот так вот
Re[5]: причины
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 29.11.08 18:38
Оценка:
Здравствуйте, Аноним, Вы писали:

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


G>>Ваша компания не Microsoft называется?


G>>Обычно дороговато выходит создание своих велосипедо в таком количестве.


А>Нет. Не Microsoft. Просто существующие наработки, не важно кого,

А>нам не подходят — слишком специфична предметная область.
И что за предметная область? И что за проект вообще?

А>Поначалу дороговато, потом на конвейер поставлено всё в виде плагинов.

А>Клепаем один за одним. Не боимся за то, что столкнёмся с трудностями и
А>всё лаконично и гармончно выходит.
Все равно сомневаюсь что написание такого количества велосипедов оправдано.

А>Вот так вот
Re: роль ООП при работе с данными
От: Аноним  
Дата: 29.11.08 18:54
Оценка: 1 (1) -1
я вот читаю и думаю, — этот разговор имеет смысл. и прикол в том, что длится он так долго не потому что кто-то искренне заблуждается, а кто-то точно знает как нужно, а потому, что нет не то что четких количественных характеристик, а нет даже четкого определения, и если в крайних случаях еще можно говорить что-где, то в граничных аж никак, из-за этого и множество интерпретаций. как на мой взгляд, разговор сводится что-то в духе: это более объектно, а это менее объектно, да нет вы просто фишку не рубите, и не правильно понимаете отцов OOП — они имели в виду вот так, а значит это самый из самых ООП подходов — просто вы забыли об этом подходе и новая трактовка, новой трактовки.

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

я понимаю что проблема сложная и что нет четких характеристик, но все же .... есть методики преобразования количественных характеристик в качественные, есть же возможность определить что значит «хороший» или «плохой». правда "хорошим" он будет для одной категории а менее хорошим или более для другой, но в нашем случае это уже результат.

к чему я это все пишу — к тому что тема интересная — и реально достойна для обсуждения... но обсуждение может преследовать разные цели — если просто поболтать — тогда тема удалась, а если результатом должно быть понимание, обучение и.д. для того чтобы убедиться, для себя же родного, в своей правоте или, возможно, поменять свое мнение и использовать что-то лучше чем использовал до этого, или обосновать подход перед начальством, или просто получить знания, то разговор должен быть предметным, обоснованным какими-то с "объективными, измеримыми" критериями и тогда действительно можно кого-то переубедить или доказать свою правоту вы не находите ?
Re[2]: роль ООП при работе с данными
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 29.11.08 20:32
Оценка:
Здравствуйте, Аноним, Вы писали:



А>я вот читаю и думаю, — этот разговор имеет смысл. и прикол в том, что длится он так долго не потому что кто-то искренне заблуждается, а кто-то точно знает как нужно, а потому, что нет не то что четких количественных характеристик, а нет даже четкого определения, и если в крайних случаях еще можно говорить что-где, то в граничных аж никак, из-за этого и множество интерпретаций. как на мой взгляд, разговор сводится что-то в духе: это более объектно, а это менее объектно, да нет вы просто фишку не рубите, и не правильно понимаете отцов OOП — они имели в виду вот так, а значит это самый из самых ООП подходов — просто вы забыли об этом подходе и новая трактовка, новой трактовки.


А>однажды мой руководитель как-то прервал подобную беседу приблизительно такой фразой, а давайте-ка не будем галлюцинировать на галлюцинации. я математик по образованию и для меня подход — вначале определить множество, а потом операции на множестве, более понятный, тогда проблема приобретает реальные границы и количественные характеристики, но ... тогда все становиться более прозаичней и меньше возможностей напирать на авторитет и др.


А>я понимаю что проблема сложная и что нет четких характеристик, но все же .... есть методики преобразования количественных характеристик в качественные, есть же возможность определить что значит «хороший» или «плохой». правда "хорошим" он будет для одной категории а менее хорошим или более для другой, но в нашем случае это уже результат.


А>к чему я это все пишу — к тому что тема интересная — и реально достойна для обсуждения... но обсуждение может преследовать разные цели — если просто поболтать — тогда тема удалась, а если результатом должно быть понимание, обучение и.д. для того чтобы убедиться, для себя же родного, в своей правоте или, возможно, поменять свое мнение и использовать что-то лучше чем использовал до этого, или обосновать подход перед начальством, или просто получить знания, то разговор должен быть предметным, обоснованным какими-то с "объективными, измеримыми" критериями и тогда действительно можно кого-то переубедить или доказать свою правоту вы не находите ?


Так в том и дело, что адекватных метрик для оценки архитектурного решения не существует.
Есть куча первичных метрик, типа количество строк, связность классов, и прочее. Эти метрики зависят от размеров проекта и учитывать их бессмысленно.
Также есть некоторое количество производных метрик, которые хоть и не зависят от размера проекта, но практически не могут показать хорошесть какого-либо архитектурного решения.


ИМХО если бы можно было объективно построить хотябы отношение порядка (даже не количественную метрику) между используемым подходами, то таких тем как эта не возникало бы.
Re[3]: роль ООП при работе с данными
От: Aikin Беларусь kavaleu.ru
Дата: 01.12.08 08:03
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Так в том и дело, что адекватных метрик для оценки архитектурного решения не существует.

G>Есть куча первичных метрик, типа количество строк, связность классов, и прочее. Эти метрики зависят от размеров проекта и учитывать их бессмысленно.
G>Также есть некоторое количество производных метрик, которые хоть и не зависят от размера проекта, но практически не могут показать хорошесть какого-либо архитектурного решения.
+1

G>ИМХО если бы можно было объективно построить хотябы отношение порядка (даже не количественную метрику) между используемым подходами, то таких тем как эта не возникало бы.

И можно было бы посадить мартышек-архитекторов за тулзу генерящую архитектуру системы на основе этого отношения порядка (ну, или, нескольких альтернативных вариантов архитектуры).
Re[21]: роль ООП при работе с данными
От: Безон Великобритания  
Дата: 09.12.08 21:06
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Тут что я ещё хочу отметить. Бизнес логика в подавляющем большинстве случаев не является поведением бизнес сущностей. А является процессом, который эти сущности использует. Поэтому всё что ты пишешь правильно, но для случаев, когда сущность, действительно, обладает каким-то поведением. Но во многих примерах поведение приписывается сущности ошибочно. Например, заказ, это всего лишь бумажка с данными. У него нет поведения. И операция "оформить заказ" это поведение оформителя заказов, а не заказа. В свою очередь "оформитель заказов" — сущность, зачастую, напрочь лишенная данных.


Могу лишь уточнить что группировать поведение можно как вокруг объекта действия так и вокруг субъекта. Это становится возможным потому что объекты взаимодействуют, а не просто действуют.
-----
Re[22]: роль ООП при работе с данными
От: Blazkowicz Россия  
Дата: 10.12.08 10:00
Оценка: 1 (1)
Здравствуйте, Безон, Вы писали:

Б>Могу лишь уточнить что группировать поведение можно как вокруг объекта действия так и вокруг субъекта. Это становится возможным потому что объекты взаимодействуют, а не просто действуют.

О том и речь, что если "формировать" все методы действия над "субъектом" в классе субъекта, то что же из этого выйдет. А выйдет каша.
Re[9]: роль ООП при работе с данными
От: Sergey T. Украина http://overstore.codeplex.com
Дата: 06.01.09 13:44
Оценка: 8 (1) +1
Здравствуйте, Sinclair, Вы писали:

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


M>>В моей реальности тоже алгоритм и его изменения первичны. Но у меня есть шеф. ТЧК. Его эти алгоритмы не интересуют, или точнее стоят на втором месте.

S>Вы просто плохо понимаете, о чем вам толкует шеф.
.....


Целиком и полностью согласен с г-м Sinclair

Нужно понимать, что есть как минимум две задачи, ортогональные друг-другу. Это ввод данных, и это показ данных. Требования к ним совершенно разные.
Но общее у них то, что данные скачут по слоям.
Есть еще обработка данных, но она стоит немного отдельно, поскольку данные в этом случае редко проникают в слой презентации.

Так вот. Для задачи ввода данных очень хорошо подходит объектная модель, более того, богатая объектная модель. Почему? Потому что при вводе данных очень много обработки локального набора данных, в терминах ООП — объекта. Это валидация, пересчет полей, и т.п.
(Кстати, совсем не обязательно хранить алгоритмы обработки внутренних данных в объекте, можно лишь вызывать их оттуда. Но это так, камень в огород противников Rich Model, которые считают скидки в строке заказа.) Здесь на помощь приходит типизированность, инкапсуляция, средства структурирования кода и т.п. Самое главное, что в задаче ввода данных объектная модель очень помогает своей структурированностью (кроме специфических случаев не- или слабоструктурированных данных). Если использовать для ввода данных, к примеру, нетипизированные датасеты, то мы теряем контроль типов, кроме того, логику, локальную для единичных объектов нам помещать опять же некуда (хотя тут спасут датасеты типизированные). Но в любом случае, это все будет выглядеть неестественно и странно, и датасетная природа съест мозг в самом скором времени, особенно, когда кто-нибудь поддастся соблазну ввести зависимости поведения от состояния Новый-Изменен-Удален и т.п. Использование других контейнеров, например, ХМЛ файлов, связано с аналогичными проблемами. Особенно весело становится при необходимости предоставления АПИ во внешний мир.

Задача же показа данных (reporting) уже стоит совсем по-другому. Здесь на первом месте стоит скорость, а на втором гибкость. Обработка данных здесь по большей части массовая. Здесь объекты ни к чему. Потому что логика, которая содержится в объектах, их поведение здесь по большей части бесполезна. Использование объектов здесь даже противопоказано, потому что вносит ненужный оверхеад на преобразование массива данных в массив объектов, а значит страдает скорость, а во-вторых, вынуждает считаться со структурой самих объектов и не позволяет малыми усилиями отойти от нее, а значит, страдает гибкость.
There is no such thing as the perfect design.
Re[6]: роль ООП при работе с данными
От: Sergey T. Украина http://overstore.codeplex.com
Дата: 18.02.09 16:51
Оценка:
Здравствуйте, Mike Chaliy, Вы писали:

IB>>Это совершенно отдельный самостоятельный юз-кейс и логично, что под него нужен отдельный набор данных, тем более, что в этом наборе вполне себе переиспользуются структуры созданные ранее, под другие задачи.

MC>Нет, например глупо выгружать на клинет внутренние айдишники оредер айтемов (тех что от ордера)? Да и вы сами дальше говорите про таймстампы. Или у вас в "стройной" моделе будут еще и таимстампы? И вообще что это за фишка внутреннюю модель системы показывать как публичный контракт? Типа для изменениня бизнеспроцеса поменть версию публичного контракта? Ндя.

Почему глупо выгружать айди? Почему глупо выгружать таймстампы? И самый главный вопрос: причем тут стройная модель? Выгрузка идентификаторов — это способ обеспечения идентификации экземпляра объекта. Потому что, например, в .НЕТ реализации распределенных приложений (за исключением, пожалуй, ремоутинга) нет другого стандартного способа идентификации экземпляров, кроме идентификации по данным, причем эту идентификацию нужно реализовывать самому (перекрывать Equals). С таймстампами немного другое, передача таймстампов — это способ, необходимый для реализации сервиса без состояния. Т.к. таймстампы все-равно нужны, и есть всего два места, где их хранить — либо на сервере, либо передавать туда-сюда на клиента.

Кстати, почему бы внутреннюю модель не показывать как публичный контракт?

Кстати, все написанное мной выше писалось в расчете на то, что таймстампы все-таки нужны.
MC>Насколько я понял (я не нашел гдето упоминания слова "синхронизация") вы сами придумали необходимость таймстампов?
MC>Иначе говоря над жирными моделями всегда есть фасады. А фасады возвращают ДТО. Будет ли это ремот фасад или просто сервис лэер роли не играет. У нас уже есть ДТО с достаточным уровнем деталиации. Никуда вобщемто жирная модель не пролитает.
Это верно только если вы не против сервисов с состоянием. Тогда для любого объекта можно создать ДТО с уровнем детализации, необходимым для решения задачи. Однако, если сервисы с состоянием не устраивают, то в ДТО помимо бизнес данных приходится складывать еще и данные, необходимые для восстановления состояния объекта модели
There is no such thing as the perfect design.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.