Ищу ментора(ов) по ООП (проектированию архитектуры и реализации)14.01.2017, 04:02. Показов 2973. Ответов 36
Метки нет (Все метки)
Ни разу не занимался подобным, опыта нет, но хочу его получить. Создал такую тему Помощь в рефакторинге кода здесь и еще на паре форумов - везде скромное молчание, единственный дельный совет дали на ЛОРе - ссылку на книгу банды четырех и совет начать с проектирования АПИ. Книгу уже читаю, пытаюсь осознать, но мешает отсутствие общих представлений типа чем абстрактные классы отличаются от интерфейсов и т.п. Уже думаю начать не с рефакторинга существующего проекта, а с набора упражнений типа создания модульного приложения с разными ГУЯми - консольным, на Swing или другой графической библиотеке, вэб и т.п. и общим универсальным бэкендом (хоть дублирующим запрос в качестве ответа) через декоратор/мост/фасад или как это там называется. Свои мысли по поводу структуры и архитектуры появляются, но они эволюционируют с течением времени, и не знаю на чем остановиться.
В общем, ищу опытного наставника(ов). Может отсутствие реакции на мои предыдущие сообщения вызвано тем, что мой вопрос был направлен абстрактно в воздух, а надо обращаться конкретно и персонально (типа отнаследоваться от абстрактного базового класса )? Shamil1, что скажете?
0
|
|
| 14.01.2017, 04:02 | |
|
Ответы с готовыми решениями:
36
Ищу ментора по С++! Ищу Ментора |
|
Заблокирован
|
||
| 17.01.2017, 11:03 | ||
|
Shamil1,
Вы пытаетесь экстраполировать мантры быдло-ООП на всю концепцию, тем самым дискредетируя идею. То что Вы говорите, вообще противоречит идее полиморфизма. Точно также можно сказать, что кнопка не должна знать, как ей отрисоваться, а между тем, именно потому что она это знает сама, мы абстрагированны от конкретной отрисовки, мы можем сказать просто "кнопка отрисуйся", а кнопка сама знает как ей отрисоваться. Это позволяет абстрагироваться от того, какой конкретно кнопке мы отсылаем сообщение "Draw". Ваши мантры противоречат самой сути ООП Строго говоря, кнопка не знает сама, но знает, к ому обратиться, чтобы ее отрисовали Добавлено через 27 минут Shamil1, Вот, кстати, наткнулся на цитату, которая как раз очень релевантна тому, что тут обсуждается, в частности, Вашей неверной трактовки абстрагирования в контексте ООП. Источник, к сожалению сдох, но вот ссылка на цитату из источника: http://www.dekorte.com/blog_archive/index.html
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|||||
| 17.01.2017, 11:13 | |||||
|
Добавлено через 3 минуты Это ведь как раз про мой пример: Animal не знает, как себя сохранить, но он знает, к кому обратиться (AnimalSaver), чтобы его сохранили.
0
|
|||||
|
Заблокирован
|
||
| 17.01.2017, 11:22 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 17.01.2017, 12:09 | |
|
1
|
|
| 17.01.2017, 12:22 | ||
![]() Что касается данного примера, то он, пожалуй, один из самых избитых. И довольно единодушно признается что object.saveTo(dataBase) - явно плохо. Часто говорят типа "объект НЕ должен знать как себя сохранять". Вы создали "сладкую жизнь" для небольшого фрагмента кода (где зовете object.saveTo) но очень дорогой ценой - теперь object должен знать все подробности dataBase. Если теперь потребуется напр xml (вместо dataBase) - опять то же самое. Выходит классический пример плохой архитектуры "все про всех знают"
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 17.01.2017, 12:39 | |||||||||
|
напротив, как раз таки именно сам объект лучше всех знает собственное устройство, и знает как себя сериализовывать здесь если и можно придраться, то только к имени метода.
в худшем случае (на языках, которые не умеют метапрограммирование) всё что он знает - что есть некий интерфейс, через который он может передавать свои данные. а кому они там понадобились, и что с этими данными будет дальше - его не парит.
0
|
|||||||||
| 17.01.2017, 13:19 | ||||
Думаю это и так всем понятно
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 17.01.2017, 13:36 | ||||
|
ну если вам так будет понятнее: object.serialize(dataBase); object.serialize(xml); нет никакого "третьего лица". и оно нафиг не нужно. вообще, откуда такая манера плодить сущности без необходимости? object сам знает все свои поля, и как себя правильно сериализовывать. нафига заводить ещё кого-то третьего, кто будет знать про него то, что он итак о себе знает? практически идеальный дизайн, который на сегодняшний день пожалуй что стандарт де факто в мире с++. то, что предлагает вы - это какое то ооп головного мозга. архитектура ради архитектуры. классы ради классов.
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 17.01.2017, 15:29 | |||
|
я повторюсь: в мире с++ boost.serialization/cereal - стандарт де факто. а во-вторых: с какой стати, он должен от них зависеть? на плюсах он даже от интерфейсов может не зависеть. что касается классического ооп, полиморфизм? не, не слышал программирование в терминах интерфейсов? не, не слышал Банда четырёх, паттерны ? не, не слышал. зато плодим сущности без всякой необходимости. которые что-то там про нас знают.
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 17.01.2017, 17:05 | ||
|
Или когда у Вас для одного набора сущностей есть 10 разных наборов классов и 20 конверторов туда-сюда. Хотя, в прошлом веке, когда модульности уделялось мало внимания, шаблоны типа "актив рекод" были популярны.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 17.01.2017, 17:26 | |||
|
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|
| 17.01.2017, 18:32 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 17.01.2017, 18:45 | |
|
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 17.01.2017, 21:33 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 17.01.2017, 21:56 | ||
|
может быть лучше приведете пример, как нужно делать, м? пример грамотного построения?
0
|
||
|
Заблокирован
|
||
| 18.01.2017, 00:16 | ||
|
0
|
||
| 18.01.2017, 00:16 | |
|
Ищу ментора Ищу ментора Ищу ментора Ищу наставника(ментора) Ищу Java ментора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|