Re[4]: критика ооп
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.10.16 15:28
Оценка:
Здравствуйте, red75, Вы писали:

R>Ещё выкинуть иерархию классов-наследников GameRule (не факт, что правила вписываются в иерархическую структуру), и заменить её композицией объектов, реализующих нужные аспекты правил игры. Потом рассмотреть возможность замены объектов с мутабельным состоянием на функции, преобразующие неизменяемые данные (сильно упрощается распараллеливание). И получится нормальное ООП (или уже не ООП?).

Ну, вообще говоря да — правила обычно штука статическая. Т.е. у них есть поведение, но нет никакого "состояния", поэтому ООП для их моделирования не шибко подойдёт.
Если вдруг будет состояние — то вполне сработает объектная иерархия. Наследоваться от правила придётся редко, чаще будет применяться композиция. Тем не менее, это вполне себе нормальное ООП — ничуть не хуже иерархий наследования в 10 уровней глубиной.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: критика ооп
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 24.10.16 18:28
Оценка: 1 (1)
Здравствуйте, Sinclair, Вы писали:

S>Как я уже неоднократно говорил, всё это "моделирование" существует исключительно в хреновых учебниках ООП.


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

Если в предметной области присутствуют такие сущности, как "поставщики", "покупатели", "товары", "сотрудники", "объекты основных средств" и т.п., то если при создании системы используются ОО-технологии, то к бабке не ходи, в системе они будут отражены классами. Выстроенными в иерархию. А как? И чем точнее объектная модель системы будет соответствовать реальному бизнес-ландшафту, тем, считается, оно и лучше. Неизменно получается ужас. А переключить понимание системы с "моделирующего" и "отражательного" подхода на что-нибудь менее чреватое риском провала проекта — ох, как не просто.

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

Чисто поржать вот путь к одному элементу одного общероссийского классификатора:
.ПРОДУКЦИЯ СЕЛЬСКОГО, ЛЕСНОГО И РЫБНОГО ХОЗЯЙСТВА
..Продукция и услуги сельского хозяйства и охоты
...Культуры однолетние
....Культуры зерновые (кроме риса), зернобобовые, семена масличных культур
.....Пшеница
......Пшеница твердая
.......Пшеница озимая твердая
........Зерно озимой твердой пшеницы

Выглядит логично ровно до тех пор, пока не возник вопрос "А что там у нас по зерну? По всякому?". Вот тут-то и оказывается, что зёрна ржи лежат и близко не рядом с зёрнами пшеницы. А булочка "7 злаков" — это вообще какой-то классификационный трындец

Я не знаю ни одной иерархии, которая была бы естественной. Даже дерево (обычное деревянное дерево) и то не совсем древовидно. О том, что дерево по-настоящему древовидно, может говорить только тот, кто ни разу не видел корней дерева.
Re[4]: критика ооп
От: UberPsychoSvin  
Дата: 07.12.16 11:51
Оценка:
Здравствуйте, Voblin, Вы писали:
V>Выглядит логично ровно до тех пор, пока не возник вопрос "А что там у нас по зерну? По всякому?".
Создаётся интерфейс IGrain, всё подходящее зерно его наследует, и всё нормально становится.
var allGrains = AllThings.OfType<IGrain>();
Re[5]: критика ооп
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 14.12.16 16:55
Оценка:
Здравствуйте, UberPsychoSvin, Вы писали:

UPS>Создаётся интерфейс IGrain, всё подходящее зерно его наследует, и всё нормально становится.


Ага. И такие костыли плодятся каждый день. В результате через пару лет никто не может понять, что вообще происходит, и почему всё так ацки тормозит
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.