Re[15]: Связность BL и DAL слоёв
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 08:07
Оценка:
Здравствуйте, Aikin, Вы писали:

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


A>>>ИМХО, в любом случае, используем ли мапер или все делаем ручками, контроль соответствия базы приложению можно осуществить только тестами.

G>>Ну что за бред.
G>>Проконтролироать это можно только на одной машине, никто вам не сможет гарантировать что у пользователя будет база соотвествовть приложению.
A>Я где-то утверждаю обратное?

Фраза "контроль соответствия базы приложению можно осуществить только тестами" утверждает обратное.
Re[13]: Связность BL и DAL слоёв
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 08:11
Оценка:
Здравствуйте, Aikin, Вы писали:

A>О каком контроле типов может идти речь, когда sql нетипизирован (мы ведь говорим про персистентность).

1. Допустим про персистентность — SQL конечно не типизирован, но есть две большие разницы, generic-маппинг через рефлекшен один раз написать, или каждый класс расписывать через рефлекшен — ты предлагаешь второе. И тут отмазка про то что SQL и так не типизирован, не пройдет, тут тебе рефлекшен боком встанет.
2. Персистентность может быть не только в БД, а в тот же XML, тоже заново все писать будешь, через рефлекшен?
3. А если объект куда передать надо, по веб-сервису например?
4. У тебя же объект создается не только для того, чтобы быть сохраненным в базе, наверное он еще для чего-то нужен? Это что-то ты тоже собираешься через рефлекшен делать?

A>ИМХО, в любом случае, используем ли мапер или все делаем ручками, контроль соответствия базы приложению можно осуществить только тестами.

Речь не о том, что используем маппер или нет, а о том, что в реальных приложениях если у тебя объект куда либо сериализуется (не важно, в базу ли, в XML, на диск...) то все его данные которые нужно персистить находятся в публичном доступе.
Понятно, что при желании можно их спрятать и придумать тридцать-три способа их извлечения в зависимости от ситуации, но практического смысла в этом нет.
Мы уже победили, просто это еще не так заметно...
Re[18]: Уточняю насчёт GoF и ООП.
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 08:18
Оценка: -1
Здравствуйте, dimgel, Вы писали:

D>Если у кого-нибудь есть пример use-case, опровергающий мои построения, или другие соображения — буду признателен.

Ты прежде чем в юз-кейсы влезать и примеры требовать, сначала сам определись что хочешь понять/доказать и о чем вообще речь-то идет.. )
Можно начать с определения ООП, а то из твоих тезисов оно не прослеживается.
Мы уже победили, просто это еще не так заметно...
Re[16]: Связность BL и DAL слоёв
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 08:27
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Фраза "контроль соответствия базы приложению можно осуществить только тестами" утверждает обратное.

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

СУВ, Aikin
Re[14]: Связность BL и DAL слоёв
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 08:27
Оценка:
Здравствуйте, IB, Вы писали:

IB>generic-маппинг через рефлекшен один раз написать, или каждый класс расписывать через рефлекшен — ты предлагаешь второе.

Я говорю про генерик-маппинг + метаданные. Второе тоже возможно, но мне это в голову даже не приходило.

IB>2. Персистентность может быть не только в БД, а в тот же XML, тоже заново все писать будешь, через рефлекшен?

IB>3. А если объект куда передать надо, по веб-сервису например?
IB>4. У тебя же объект создается не только для того, чтобы быть сохраненным в базе, наверное он еще для чего-то нужен? Это что-то ты тоже собираешься через рефлекшен делать?
Не нужно раздувать вполне конкретное применение способа (для воссоздания объекта из базы) на общий случай.


IB>Речь не о том, что используем маппер или нет, а о том, что в реальных приложениях если у тебя объект куда либо сериализуется (не важно, в базу ли, в XML, на диск...) то все его данные которые нужно персистить находятся в публичном доступе.

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

СУВ, Aikin
Re[18]: Уточняю насчёт GoF и ООП.
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 08:50
Оценка: +1
Здравствуйте, dimgel, Вы писали:

D>Тезис собственно такой: единственная существенная польза от ООП, благодаря которой его все используют, — это полиморфизм.

Полиморфизм в функциональных языках так же отлично реализуется.

ИМХО, единственная польза от ООП в том, что людям тупо удобнее думать в категориях объектов и их взаимодействия. Все, точка. Остальное не более чем плюшки.

СУВ, Aikin
Re[19]: Уточняю насчёт GoF и ООП.
От: dimgel Россия https://github.com/dimgel
Дата: 18.05.09 09:06
Оценка:
Здравствуйте, Aikin, Вы писали:

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


D>>Тезис собственно такой: единственная существенная польза от ООП, благодаря которой его все используют, — это полиморфизм.

A>Полиморфизм в функциональных языках так же отлично реализуется.

Можно конкретный пример, посложнее моего с посетителем? То, что реализуется, я подозреваю, но не знаю как это выглядит на практике. В голове усиленно крутится только реализация на прологе, который вообще из третьей оперы, и мне оно представляется несколько более громоздким.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: Уточняю насчёт GoF и ООП.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 18.05.09 09:31
Оценка:
Здравствуйте, dimgel, Вы писали:

D>1. Посетитель. В функциональном языке это просто суперпозиция функций:


D>
D>def walkTree(root: TreeNode, visitor: TreeNode => Unit)
D>


Это стратегия, а не посетитель.
Re[20]: Уточняю насчёт GoF и ООП.
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 09:38
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Можно конкретный пример, посложнее моего с посетителем? То, что реализуется, я подозреваю, но не знаю как это выглядит на практике. В голове усиленно крутится только реализация на прологе, который вообще из третьей оперы, и мне оно представляется несколько более громоздким.

А смысл?

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

СУВ, Aikin
Re[19]: Уточняю насчёт GoF и ООП.
От: dimgel Россия https://github.com/dimgel
Дата: 18.05.09 09:39
Оценка:
Здравствуйте, samius, Вы писали:

D>>
D>>def walkTree(root: TreeNode, visitor: TreeNode => Unit)
D>>


S>Это стратегия, а не посетитель.


Это зависит от семантики вызова. Если задача состоит в том, чтобы обойти дерево и в каждом узле выполнить какую-то операцию, то посетитель.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[20]: Уточняю насчёт GoF и ООП.
От: samius Япония http://sams-tricks.blogspot.com
Дата: 18.05.09 09:43
Оценка: 2 (1)
Здравствуйте, dimgel, Вы писали:

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


S>>Это стратегия, а не посетитель.


D>Это зависит от семантики вызова. Если задача состоит в том, чтобы обойти дерево и в каждом узле выполнить какую-то операцию, то посетитель.


Посетитель — это когда надо выполнить специфическую для типа узла операцию.
Re[15]: Связность BL и DAL слоёв
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 09:52
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Я говорю про генерик-маппинг + метаданные.

Ok. то есть ты предлагаешь под каждый случай использования данных, вместо публичного доступа использовать генерик-маппинг + метаданные? Какой в этом практический смысл? "Какую задачу ты этим решаешь?" (с)

A>Не нужно раздувать вполне конкретное применение способа (для воссоздания объекта из базы) на общий случай.

Если у тебя объект ни для чего другого кроме как для "воссоздания" из базы не используестя, то действительно не нужно, но в реальной жизни так не бывает.

A>Вот с этим я и спорю.

Напрасно.

A>А мне нравится

Твои проблемы.
Мы уже победили, просто это еще не так заметно...
Re[16]: Связность BL и DAL слоёв
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 10:00
Оценка:
Здравствуйте, IB, Вы писали:

A>>Я говорю про генерик-маппинг + метаданные.

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


A>>Не нужно раздувать вполне конкретное применение способа (для воссоздания объекта из базы) на общий случай.

IB>Если у тебя объект ни для чего другого кроме как для "воссоздания" из базы не используестя, то действительно не нужно, но в реальной жизни так не бывает.
Воссоздали, изменили через его публичный контракт, отобразили пользователю, сохранили.
Что не так?



A>>Вот с этим я и спорю.

IB>Напрасно.
A>>А мне нравится
IB>Твои проблемы.
Ага, ктоб сомневался

СУВ, Aikin
Re[21]: Уточняю насчёт GoF и ООП.
От: dimgel Россия https://github.com/dimgel
Дата: 18.05.09 10:00
Оценка:
Здравствуйте, samius, Вы писали:

S>Посетитель — это когда надо выполнить специфическую для типа узла операцию.


Да, точно, попутал.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[19]: Уточняю насчёт GoF и ООП.
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 10:08
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Полиморфизм в функциональных языках так же отлично реализуется.

Полиморфизм реализуется даже в С.. =)

A>ИМХО, единственная польза от ООП в том, что людям тупо удобнее думать в категориях объектов и их взаимодействия. Все, точка. Остальное не более чем плюшки.

Думать всем удобнее по разному. Просто в ООП языках такие вещи как полиморфизм, инкапсуляция и всевозможное наследование введены на уровене языка, как следствие, в таких языках этими вещами удобнее пользоваться и выражать логику приложения именно в этих терминах.
В функциональных языках, где на нативно поддерживаются другие вещи, та же логика совершенно естественным образом выражается по другому, в процедурных — по третьему.
И совсем не фокус взять один язык и писать на нем в стиле другого.
Вопрос лиш в том, какая (прости-господи) парадигма лучше подходит под конкретную задачу.
Мы уже победили, просто это еще не так заметно...
Re[17]: Связность BL и DAL слоёв
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 10:16
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Нет, я предлагаю под каждый способ использования подобрать способ/инструмент больше всего подходящий для него.

Дело в том, что в качестве способа публичный доступ больше всего подходит для всех способов/инструментов, даже для тех, о которых ты еще не подумал. Причем он универсальный, не надо отдельно приседать в каждом конкретном случае.

A>Воссоздали, изменили через его публичный контракт, отобразили пользователю, сохранили.

A>Что не так?
Да все так, просто публичный контракт — это тривиальный геттер/сеттер. И ничто не мешает реализовать тот же персистанс ровно через этот же публичный контракт.

A>Ага, ктоб сомневался

Ну просто ощущение что "баба яга против".
Мы уже победили, просто это еще не так заметно...
Re[20]: Уточняю насчёт GoF и ООП.
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 10:23
Оценка:
Здравствуйте, IB, Вы писали:

A>>ИМХО, единственная польза от ООП в том, что людям тупо удобнее думать в категориях объектов и их взаимодействия. Все, точка. Остальное не более чем плюшки.

IB>Думать всем удобнее по разному.
Полностью согласен. Но все мы живем в объектом мире с самого рождения. Наш мозг с самого детства развивался в этом ключе.

IB>Просто в ООП языках такие вещи как полиморфизм, инкапсуляция и всевозможное наследование введены на уровене языка, как следствие, в таких языках этими вещами удобнее пользоваться и выражать логику приложения именно в этих терминах.

Еще раз: это не более чем плюшки ООП.

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

IB>И совсем не фокус взять один язык и писать на нем в стиле другого.
+1
IB>Вопрос лиш в том, какая (прости-господи) парадигма лучше подходит под конкретную задачу.
+10000!


СУВ, Aikin
Re[18]: Связность BL и DAL слоёв
От: Aikin Беларусь kavaleu.ru
Дата: 18.05.09 10:30
Оценка:
Здравствуйте, IB, Вы писали:

A>>Нет, я предлагаю под каждый способ использования подобрать способ/инструмент больше всего подходящий для него.

IB>Дело в том, что в качестве способа публичный доступ больше всего подходит для всех способов/инструментов, даже для тех, о которых ты еще не подумал. Причем он универсальный, не надо отдельно приседать в каждом конкретном случае.
В этом случае проще. Но объект дизайнился не для того, чтобы его было просто/удобно перистить, а для того чтобы представлять часть бизнесс логики приложения. То что его нужно сохранять/воссоздавать -- задача сервисного слоя.


A>>Воссоздали, изменили через его публичный контракт, отобразили пользователю, сохранили.

A>>Что не так?
IB>Да все так, просто публичный контракт — это тривиальный геттер/сеттер. И ничто не мешает реализовать тот же персистанс ровно через этот же публичный контракт.
Нет, публичный контракт это публичный контракт.
Например метод DoEverythingYouCan(), гетер без сеттера.

СУВ, Aikin
Re[19]: Связность BL и DAL слоёв
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 12:18
Оценка:
Здравствуйте, Aikin, Вы писали:

A>В этом случае проще. Но объект дизайнился не для того, чтобы его было просто/удобно перистить, а для того чтобы представлять часть бизнесс логики приложения.

Иными словами, мы приходим к двум объектам, один для сериализации, а другой для реализации бизнес-логики приложения — ЧТД..

A>То что его нужно сохранять/воссоздавать -- задача сервисного слоя.

Сохранять/загружать нужно не его, а данные, которые он содержит.

A>Нет, публичный контракт это публичный контракт.

A>Например метод DoEverythingYouCan(), гетер без сеттера.
Каким методом ты будешь сериализовать свой объект в XML?
Каким методом ты будешь считать скользящее среднее по коллекции объектов?
Каким методом ты будешь выполнять форматирование ФИО для разных сценариев?
...
Для ответа на все эти вопросы у тебя есть ровно два варианта
1. Во внешних методах нарошно заточеных для такого функционала, а значит у тебя есть публичный доступ к этим данным.
2. С помощю методов реализованных прямо в этом объекте.
Нужно пояснять, почему второй ответ не правильный?
Мы уже победили, просто это еще не так заметно...
Re[21]: Уточняю насчёт GoF и ООП.
От: IB Австрия http://rsdn.ru
Дата: 18.05.09 12:23
Оценка:
Здравствуйте, Aikin, Вы писали:

A>Но все мы живем в объектом мире с самого рождения. Наш мозг с самого детства развивался в этом ключе.

Да вот не факт. Чтобы дорасти до ООП и моделирования в рамках этой концепции мозг приходится вывихнуть довольно основательно. Некоторые вон, до сих пор еще не осилили..
Самый простой подход даже не процедурный, а тупо линейный, другое дело что со сложностью в этом случае вообще не справиться.

A>Еще раз: это не более чем плюшки ООП.

Что ты понимаешь под "плюшками ООП", а что под не плюшками?
Мы уже победили, просто это еще не так заметно...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.