критика ооп
От: Current  
Дата: 06.05.16 09:50
Оценка: :)))
Надеюсь, будет никак с этой темой:
http://rsdn.ru/forum/trash/6091539.1

Началось все с
Деструкторы — плохо, используйте явное освобождение ресурсов
Конструкторы — плохо, используйте фабрики, прячьте конструкторы в private
Множественное наследование — плохо
Наследование — всегда плохо, используйте агрегацию и интерфейсы
Интерфейсы со множеством вызовов — плохо, используйте интерфейсы с одним

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

А инкапсуляция тоже не всегда хорошо. Когда тесты на какой то участок кода пишутся, нужно состояние окружения подменять на входе, а на выходе тестировать что оно изменилось в нужное. Т.е. и состояние тестируемого объекта и состояния объектов с которыми он взаимодействуют нужно устанавливать независимо от штатных методов объектов — жесткое нарушение инкапсуляции, и потом лезть во внутрь объекта за состоянием — тоже жестко нарушая инкапсуляцию. Состояние это вообщем-то все поля объекта.

Инкапсуляция — плохо для ТДД

* то что состояние this в Си-шных реализациях ООП легко отделимо от методов это то что надо для тестов


PS.
Итого, если код в более менее хорошей архитектуре, покрыт тестами, компилируется быстро и быстро работает — это по-прежнему код на СИ.
Когда ваш компилятор подвиснет в очередной раз на пару минут, задумайтесь над этим
Re: критика ооп
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.05.16 10:08
Оценка: +2
Здравствуйте, Current, Вы писали:

C>Надеюсь, будет никак с этой темой:

C>http://rsdn.ru/forum/trash/6091539.1

"Будет никак" — это значит, что вы надеятесь, что с этой темой (которая по ссылке) ничего не будет. Если вы надеятесь, что с вашей темой будет по-другому, чем с темой по ссылке, это пишется "будет не как". Через "е" и раздельно.

Что до самой темы по ссылке, то она, на мой взгляд, недостаточно раскрыта.

C>Итого, если код в более менее хорошей архитектуре, покрыт тестами, компилируется быстро и быстро работает — это по-прежнему код на СИ.

C>Когда ваш компилятор подвиснет в очередной раз на пару минут, задумайтесь над этим

По-разному бывает. Бывает даже так, что код нифига не покрыт тестами, а все равно, работает, собака.
Re: критика ооп
От: Sinix  
Дата: 06.05.16 10:09
Оценка:
Здравствуйте, Current, Вы писали:

C>Надеюсь, будет никак с этой темой:

C>http://rsdn.ru/forum/trash/6091539.1

У вас топик для потрындеть Философии ПО, как мне кажется.

Сферический ООП в вакууме никакого прикладного применения не имеет (статьи и конференции за полезный выхлоп не считаем), т.е. в этом разделе точно оффтопик.

Если уточнить вопрос до конкретного языка / фреймворка, то внезапно окажется, что в каждом конкретном случае все актуальные грабли уже давно известны и обойдены.
Начните с конкретных примеров, или голосуйте за снести в философию — присоединюсь.
Re[2]: критика ооп
От: Current  
Дата: 06.05.16 10:28
Оценка: -2
Здравствуйте, Pzz, Вы писали:

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


C>>Надеюсь, будет никак с этой темой:

C>>http://rsdn.ru/forum/trash/6091539.1

Pzz>"Будет никак" — это значит, что вы надеятесь, что с этой темой (которая по ссылке) ничего не будет. Если вы надеятесь, что с вашей темой будет по-другому, чем с темой по ссылке, это пишется "будет не как". Через "е" и раздельно.


а как же устойчивые "никак с этим не связан" и "никак не похоже на"

если "не", то "не так как с этой темой"
Re[2]: критика ооп
От: Current  
Дата: 06.05.16 10:36
Оценка:
S>У вас топик для потрындеть Философии ПО, как мне кажется.

S>Сферический ООП в вакууме никакого прикладного применения не имеет (статьи и конференции за полезный выхлоп не считаем), т.е. в этом разделе точно оффтопик.


А также сферический DDD, TDD, BDD и другие модные слова? Не согласен.

Все таки в них обсуждаются общие принципы построения кода, по крайней мере для императивных языков. А это и есть архитектура.

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


Тогда тема будет перенесена в обсуждение этого фреймворка и его граблей.
Re[3]: критика ооп
От: Sinix  
Дата: 06.05.16 10:48
Оценка: 2 (1) +1
Здравствуйте, Current, Вы писали:

>>Сферический ООП в вакууме никакого прикладного применения не имеет (статьи и конференции за полезный выхлоп не считаем), т.е. в этом разделе точно оффтопик.

C>А также сферический DDD, TDD, BDD и другие модные слова? Не согласен.
Ну, это ваши проблемы.

DDD хорош в своей теоретической части, которая про анализ требований и построение биз-архитектуры. Вторую половину — про натягивание кода на паттерны — всерьёз воспринимать невозможно.
TDD/BDD без соответствующей инструментальной обвязки вообще годятся только для буллшит-бинго. Но это снова оффтоп.


C>Все таки в них обсуждаются общие принципы построения кода, по крайней мере для императивных языков. А это и есть архитектура.

1. Нет никаких общих принципов в прикладной разработке. Точнее они есть, но пользы от них — только чтоб свою терминологию для каждого языка не изобретать.
2. Общие принципы и архитектура ПО — ортогональные понятия.

Блин, да даже банальный if в отдельных языках вынуждает городить костыли, что уж про более сложные вещи говорить?
Re[4]: критика ооп
От: Current  
Дата: 06.05.16 11:06
Оценка: :))) :)
Здравствуйте, Sinix, Вы писали:

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


>>>Сферический ООП в вакууме никакого прикладного применения не имеет (статьи и конференции за полезный выхлоп не считаем), т.е. в этом разделе точно оффтопик.

C>>А также сферический DDD, TDD, BDD и другие модные слова? Не согласен.
S>Ну, это ваши проблемы.
Ваши.

S>DDD хорош в своей теоретической части, которая про анализ требований и построение биз-архитектуры. Вторую половину — про натягивание кода на паттерны — всерьёз воспринимать невозможно.

S>TDD/BDD без соответствующей инструментальной обвязки вообще годятся только для буллшит-бинго. Но это снова оффтоп.

C>>Все таки в них обсуждаются общие принципы построения кода, по крайней мере для императивных языков. А это и есть архитектура.

S>1. Нет никаких общих принципов в прикладной разработке. Точнее они есть, но пользы от них — только чтоб свою терминологию для каждого языка не изобретать.

Может вам нечего тогда делать в форуме Архитектура ПО?
Re: критика ооп
От: antropolog  
Дата: 07.05.16 18:06
Оценка: 50 (1) +14
Здравствуйте, Current, Вы писали:

C>Деструкторы — плохо

деструкторы это и хорошо и плохо

C>Конструкторы — плохо

конструкторы это и хорошо и плохо

C>Множественное наследование — плохо

множественное наследование это и хорошо и плохо

C>Наследование — всегда плохо

наследование и хорошо и плохо

C>Интерфейсы со множеством вызовов — плохо

интерфейсы со множеством вызовов это и хорошо и плохо

разработка ПО это инженерия, т.е. поиск технического компромисса между противоричивыми требованиями/инструментами/решениями в определённом контексте. Так как каждый проект в той или иной степени уникален, то универсального "это хорошо" а "вот это плохо", существующего для всех типов проектов нет и быть не может. Единственное что может быть общим — это наличие здравого смысла и обоснованность принятия решений.
Re: критика ооп
От: 0x7be СССР  
Дата: 07.05.16 18:36
Оценка: +1
Здравствуйте, Current, Вы писали:

C>Надеюсь, будет никак с этой темой:

У тебя не критика ООП, у тебя критика конкретного способа его готовить.
Я, кстати, с таким способом приготовления на практике не встречался, так что подозреваю, что это синтетический конструкт чисто для дискуссии.
Re[5]: критика ооп
От: 0x7be СССР  
Дата: 07.05.16 18:38
Оценка:
Здравствуйте, Current, Вы писали:

S>>1. Нет никаких общих принципов в прикладной разработке. Точнее они есть, но пользы от них — только чтоб свою терминологию для каждого языка не изобретать.

C>Может вам нечего тогда делать в форуме Архитектура ПО?
Мягко говоря, странный вывод
Re[6]: критика ооп
От: Current  
Дата: 09.05.16 20:57
Оценка:
S>>>1. Нет никаких общих принципов в прикладной разработке. Точнее они есть, но пользы от них — только чтоб свою терминологию для каждого языка не изобретать.
C>>Может вам нечего тогда делать в форуме Архитектура ПО?
0>Мягко говоря, странный вывод

Ну да, он даже завсегдатый. И широкая публика тут того же мнения.
Читали "страна слепых"? Вот про форум Архитектура ПО у меня сейчас тоже мнение.

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

Программы переписываются с java <-> c++ <-> c <-> perl <-> php <-> и т.д. без смены архитектуры
Не касательно вопроса зачем, просто сам факт программы можно переписывать на другой язык сохраняя не только функциональность, но и внутреннюю структуру.

Это примерно как IP все равно, будет ли внизу Ethernet, PPP или IEEE 802.11n.
Не настолько гладко, но все равно намного ближе к правде, чем та демагогия про нет "пользы от общих принципов" которую тут развели.

Не видишь пользы? сиди в другом форуме
Re[2]: критика ооп
От: Current  
Дата: 09.05.16 21:18
Оценка: -2
A>разработка ПО это инженерия, т.е. поиск технического компромисса между противоричивыми требованиями/инструментами/решениями в определённом контексте. Так как каждый проект в той или иной степени уникален, то универсального "это хорошо" а "вот это плохо", существующего для всех типов проектов нет и быть не может. Единственное что может быть общим — это наличие здравого смысла и обоснованность принятия решений.

У разрабочика цель довольно конкретная — отразить логику в коде. Если контекст требований про который ты говоришь задается прикладной областью, то я не очень понимаю где дилема — если делать сервер кафе мороженного то множественное наследование хорошо, а в gui булочной публичные конструкторы это здорово?

Если контекст в тех.окружении то, да бывает, но и там на 10 исключений 100500 общих принципов.
Re[2]: критика ооп
От: Current  
Дата: 09.05.16 21:23
Оценка:
0>Я, кстати, с таким способом приготовления на практике не встречался, так что подозреваю, что это синтетический конструкт чисто для дискуссии.

Ну первый абзац это, как мне кажется, уже классика.

Про вред инкапсуляции скорее витающая в воздухе идея, которую я позволил себе здесь добавить для обсуждения.
Re[3]: Что будет с Крымом...
От: oleg.agafonov  
Дата: 10.05.16 06:08
Оценка: 1 (1)
Здравствуйте, Current, Вы писали:

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


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


C>>>Надеюсь, будет никак с этой темой:

C>>>http://rsdn.ru/forum/trash/6091539.1

Pzz>>"Будет никак" — это значит, что вы надеятесь, что с этой темой (которая по ссылке) ничего не будет. Если вы надеятесь, что с вашей темой будет по-другому, чем с темой по ссылке, это пишется "будет не как". Через "е" и раздельно.


C>а как же устойчивые "никак с этим не связан" и "никак не похоже на"


C>если "не", то "не так как с этой темой"


Здесь само предложение некорректно составлено. Должно быть примерно так: Надеюсь, будет не так, как с темой (ссылка на тему).
Re[7]: критика ооп
От: 0x7be СССР  
Дата: 10.05.16 06:24
Оценка: +1
Здравствуйте, Current, Вы писали:

C>Не настолько гладко, но все равно намного ближе к правде, чем та демагогия про нет "пользы от общих принципов" которую тут развели.

C>Не видишь пользы? сиди в другом форуме
Я вижу пользу от процесса разработки и реализации архитектуры для некоторых проектов, но не вижу, как твои рассуждения об "общих принципах" с этим связаны, и как они могут быть полезны. И в этом я вижу большую проблему у многих архитекторов, с которыми мне приходилось иметь дело — они очень много рассуждали о принципах, а результатом их работы становился пшик.
Re: критика ооп
От: Miroff Россия  
Дата: 10.05.16 07:02
Оценка: -2 :))) :)))
Здравствуйте, Current, Вы писали:


C>Итого, если код в более менее хорошей архитектуре, покрыт тестами, компилируется быстро и быстро работает — это по-прежнему код на СИ.


Еще один прозрел. Все умные люди давно перелезли с C++ на связку C + python/java/ruby/whatever.
Re[8]: критика ооп
От: Current  
Дата: 10.05.16 10:52
Оценка: :)
0>Я вижу пользу от процесса разработки и реализации архитектуры для некоторых проектов, но не вижу, как твои рассуждения об "общих принципах" с этим связаны, и как они могут быть полезны.

Мои рассуждения в начале топика. По существу мне никто не ответил, поэтому тема безвозвратно скатилась в трепло о жизни.

0>И в этом я вижу большую проблему у многих архитекторов, с которыми мне приходилось иметь дело — они очень много рассуждали о принципах, а результатом их работы становился пшик.


Программисты без архитектора делают код в архитектуре "из г. и палок", которую они на словах ругают,
но если быть честными, ей несказанно рады — вначале подпирают новыми палками, потом чтобы палки не падали, обмазывают хот фиксами

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

мне это напоминает детский стишок

"ох и трудная это работа из болота тащить бегемота"

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

даже если какой-то герой их и вытащит, при первой же возможности сбегут в "г. и палки" обратно
Re[9]: критика ооп
От: 0x7be СССР  
Дата: 10.05.16 11:36
Оценка: +2
Здравствуйте, Current, Вы писали:

C>Мои рассуждения в начале топика. По существу мне никто не ответил, поэтому тема безвозвратно скатилась в трепло о жизни.

Ты опоздал с подобной темой. Объектная истерия уже прошла, такие топики уже не вызывают большого отклика у аудитории.

C>Программисты без архитектора делают код в архитектуре "из г. и палок", которую они на словах ругают,

К сожалению, с архитектором они тоже часто делают говно. Разница только в том, что в этом случае говно ажурное.
То есть формально всё на месте — модули, интерфейсы, микросервисы всякие, а счастья — нет

C>но если быть честными, ей несказанно рады — вначале подпирают новыми палками, потом чтобы палки не падали, обмазывают хот фиксами

C>и так по кругу, деньги идут, программисты довольны, а когда им нанимают архитектора,
C>занимаются саботажем разной степени наглости, пока архитектора не уволят за то, что он "демотивировал" команду
Ты о каких-то конкретных программистах говоришь?
Отредактировано 10.05.2016 11:37 0x7be . Предыдущая версия .
Re[10]: критика ооп
От: Current  
Дата: 10.05.16 11:52
Оценка:
C>>Мои рассуждения в начале топика. По существу мне никто не ответил, поэтому тема безвозвратно скатилась в трепло о жизни.
0>Ты опоздал с подобной темой. Объектная истерия уже прошла, такие топики уже не вызывают большого отклика у аудитории.

Ну инкапсуляцию методов и данных, на которую был наезд, используют и хвалят 99.9%


C>>но если быть честными, ей несказанно рады — вначале подпирают новыми палками, потом чтобы палки не падали, обмазывают хот фиксами

C>>и так по кругу, деньги идут, программисты довольны, а когда им нанимают архитектора,
C>>занимаются саботажем разной степени наглости, пока архитектора не уволят за то, что он "демотивировал" команду
0>Ты о каких-то конкретных программистах говоришь?

Хуже, это сейчас тренд у менеджеров — "не берите в команду архитектора, он может демотивировать ребят".

Что еще хуже, этот совет практичен. Менеджеров "г. и палки" как правило тоже устраивают.
Re[11]: критика ооп
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.05.16 12:09
Оценка: +3
Здравствуйте, Current, Вы писали:

C>Что еще хуже, этот совет практичен. Менеджеров "г. и палки" как правило тоже устраивают.

Нужно понимать, что прямой корреляции между качеством архитектуры и прибыльностью проекта нет.
Более того, часто бывает так, что пока архитектор парит в эмпиреях ака "тут одного рефакторинга на пару человеколет", беспринципный внедренец быстренько втыкает очередную палку, обмазывает очередным г., и разблокирует сделку на $300k.
Я такого навидался. Когда софт проектируется не с нуля, и внезапно появляются задачи типа "а вот давайте добавим в магазин валидацию телефонного номера покупателя на предмет отсутствия задолженности по счетам", то архитектурно-правильные решения типа "оооо, ну давайте добавим ещё один тип плагинов в нашу систему автоматизации бизнеса, реализуем плагин по проверке номера, выставим интерфейсы для магазина, и допилим магазин, чтобы он пользовался этими интерфейсами" тупо вылетают за пределы окупаемости. А решение "давайте вкрячим вызов javascript-залипухи в кастомизацию шаблона отображения странички чекаута" опытный ниндзя может прикрутить прямо на глазах изумлённого заказчика. Это, конечно, потом больно бьёт в майнтенансе, но деньги заказчик платит сейчас, а маинтенанс будет когда-то потом.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.