Ищу ментора(ов) по ООП (проектированию архитектуры и реализации)14.01.2017, 04:02. Показов 2767. Ответов 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
|
||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
|
|||||
| 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
|
|||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
|
||
| 17.01.2017, 17:05 | ||
|
Или когда у Вас для одного набора сущностей есть 10 разных наборов классов и 20 конверторов туда-сюда. Хотя, в прошлом веке, когда модульности уделялось мало внимания, шаблоны типа "актив рекод" были популярны.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 17.01.2017, 17:26 | |||
|
0
|
|||
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
|
|
| 17.01.2017, 18:32 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 17.01.2017, 18:45 | |
|
0
|
|
|
Модератор
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,876
|
||
| 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 | |
|
Помогаю со студенческими работами здесь
37
Ищу ментора Ищу ментора Ищу ментора Ищу наставника(ментора) Ищу Java ментора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|