Здравствуйте, Mnmal, Вы писали:
M>человек вам привел на конкретных примерах что ваша реализация плохо расширяется в случае изменения классов терминала или клавиатуры. по моему, вполне реальной.
M>а что это как не показатель не очень удачной архитектуры?
Он привел это на _своих_ примерах применитльно к _своей_ задаче в _своем_ понимании этого вопроса. Разницу чувствуете?
Окей. Коли уж мы сцепились из за какого-то тривиального примера, поместим его в конкретную задачу и рассмотрим его корректность.
У меня есть программа которая работает с _терминалом_. Что такое терминал обьяснять надо? ANSI, VT102,...
У меня есть два класса которые реализуют чтение/запись с/в потока байтов и пользуясь термкапом превращают их в нажатия клавиш и символы на экране. Можно реализавать логику термкапав, как шаблонную фукцию, стратегтю параметризации, интерфейсы к имплементационным классом.... но обычно люди просто работают с термкапом.
Далее, терминал это совокупность кода работющего с входом и выходом параметризованая термкапам и имеющая специфический код инициализации и финализации.
Далее, чтобы отсечь обвинения в нарушении OCP и DIP, уточню, что классы реализующие работу с потоками реализуют интерфейсы полностью совпадающие с ними по публичным функциям, а код работающий с входом/выходом работает с этими интерфейсами.
Терминал это класс для обьектов созданных для _конкретного_ типа терминала. Это _реализация_ управления наследуемым кодом и его поведением.
Теперь вопрос, нафига мне надо было это обьяснять если это и так понятно, а топик про множественное наследование? И в чем я ошибаюсь и почему эта схема не расширяема в рамках задачи?
M>когда в процессе разработке присутсвует этап code review, то даже маленькие кусочки приходиться писать задумываясь о архитектурной правльности этого кода.
M>кто-то скажет что это догматы и стереотипы, а кто то поймет что придерживаться стандартов, в том числе и архитектурных, это хороший стиль, это облегчает дальнейшее сопровождение и пр.
Нет стандартов на архитектуру, а стиль специфичен для каждой команды. Есть терминология и наборы типовых решений, которые еще надо напильником доработать. Ни разу в жизни не видел работающую сложную систему построеную сразу с нуля без эволюции. С другой стороны я многих чудес не видел.
Как сказал один очень умный человек, посмотревший этот треп — спор ни о чем. Война догматов, практиков и теоретиков