Size: a a a

2020 August 16

A

Andrey Sea in 💻 Coding Ru
Anton
> ну "признано" - пиши кем, не надо за всех говорить... я вот не признал, значит не признано )
Согласен, использовал лишние weasel word, anonymous authority (https://en.m.wikipedia.org/wiki/Weasel_word), которые как раз и портят многое из того, "о чем люди говорят, книги пишут". Не подумал, что вы не в курсе этой рекомендации с наследованием и слишком резко написал об этом))
Хотя источник на wiki привел, еще больше можно найти запросом "why inheritance worst practices".
Вот тут например краткие практичные ответы:
https://www.quora.com/Is-inheritance-bad-practice-in-OOP-Many-places-that-teach-design-patterns-say-to-opt-for-composition-over-inheritance-but-what-about-when-multiple-classes-share-logic-from-an-abstract-class-such-as-in-the-Template-Method-design-pattern

Мне был интересен не срач, а что Mikhail имел ввиду под пониманием ООП и что это пониманин дало практически. Потому что сам не могу однозначно определить это понимание, т.к. критери ООП для кода нечеткие, их обычно сводят к компромисам принципов SOLID, GRASP, KISS, YAGNI, DRY, Worse is better и т.п.

Для самих языков парадигма ООП более опеделенная - они либо помогают писать в стиле ООП, либо нет. Знакомые профи считают, что если используется язык ООП, это уже технически ООП, отдельный вопрос к качеству конкретного дизайна, которое и служит в итоге критерием понимания ООП. Как стойной "теории", ООП по-моему нет, скорее ОО-дизайн и uml, которые парадигмой ООП и принципами притянуты к теориям и довелены до ума лучшими практиками. Т.о. ООП практиччески бессмысленно учить, а понять  можно только на практике, за много итераций. И по началу уж точно ООП не облегчает жизнь програмиста.

Когда говорят, что не понимают ООП, у всех это разные вещи и мне интересно что именно непонятно, чтобы вовремя подсказать начинающим. И  точней увидеть основной паттерн непонимания в чужом коде.

Что в ООП можно непонимать для реальной работы/дизайна не так очевидно. Полиморфизм, наверное, самое сложное, в части нюансов статического/динамического связывния и техник избежания явного приведения типов, перекликается и с паттернами и с наследованием. Рефакторинг в ООП стиле - тоже тема непростая, например - не бояться создавать технические классы, которые могут быть только из одной функции или по-другому не похожи на классическое описание объекта. Ещё правильное понимание инкапсуляции - оно полегче, но и правильность применения возмодно проверить только в долгоживущем проекте.
Понять проблематку отдельных паттернов проектирования сложно, слишко глубокие практические корни для начинающих, требующие понимания принципов (SOLID etc.) и нансов реализации поддержки ООП конкретным языком, не всегда  адекватные практике примеры.

Ответы Mikhail дал:

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

"Создать объект, а потом от него создать наследника, использовав методы базового класса, а если очень захочется, то переопределить методы parent-класса, у наследника"
Тоже примерно понятно, что дало понимание наследования и полиморфизма для практики. И опять не очень ясно, что было непонятно до этого.
Я уже не очень понимаю, какие стожности в применении наследования в конкретных языках и, соответственно, как это непонятное проще обьяснить.
Языки предоставляют этот механизм, и часто обязывают им пользоваться как минимум для суперобъекта. Для применения в дизайне, по-моему важней понять, когда наследование не нужно (нарушает инкапсуляцию, LSP и т.п.). С Turbo Pascal тоже немного имел дело (без ООП, формошлёпил немного), там наверное особые усилия нужны именно перейти к парадигме ООП. В Java мне по-началу было больше непонятно наоборот, почему чисто процедурные куски помещаются в объекты, которые не похожи на обьекты по большинству пюопределений и примеров.
.я в курсе рекомендаций отдельных людей или групп людей, о не считаю их весомыми
источник

A

Andrey Sea in 💻 Coding Ru
Anton
Насчет срача по ООП, мне нравятся статьи вроде этой)))

Почему ООП - это плохо
https://medium.com/@konradmusial/why-oop-is-bad-and-possibly-disastrous-e0844fa96c1f

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

A

Andrey Sea in 💻 Coding Ru
и особые усилия для ООП нужны ВЕЗДЕ, во всех языках
источник

A

Andrey Sea in 💻 Coding Ru
чистого ООП нет нигде
источник

A

Andrey Sea in 💻 Coding Ru
ну и по поводу статей и прочего - обычно это всё страдания и ломка из разряда "ой как всё неудобно, ой я хочу по-другому, то что я уже выучил и понял круто. а вот это всё я не рекомендую"... вот когда страдания закончатся, человек _поймёт_ всё о чем он говорит, тогда можно и обсудить... и если не будет максималистких взглядов "все не рекомендуют", "все не используют", т.п.
источник

A

Andrey Sea in 💻 Coding Ru
мм? а в чем прикол-то?
источник

А

Артем in 💻 Coding Ru
Реклама?
источник

M

Mikhail in 💻 Coding Ru
Anton
> ну "признано" - пиши кем, не надо за всех говорить... я вот не признал, значит не признано )
Согласен, использовал лишние weasel word, anonymous authority (https://en.m.wikipedia.org/wiki/Weasel_word), которые как раз и портят многое из того, "о чем люди говорят, книги пишут". Не подумал, что вы не в курсе этой рекомендации с наследованием и слишком резко написал об этом))
Хотя источник на wiki привел, еще больше можно найти запросом "why inheritance worst practices".
Вот тут например краткие практичные ответы:
https://www.quora.com/Is-inheritance-bad-practice-in-OOP-Many-places-that-teach-design-patterns-say-to-opt-for-composition-over-inheritance-but-what-about-when-multiple-classes-share-logic-from-an-abstract-class-such-as-in-the-Template-Method-design-pattern

Мне был интересен не срач, а что Mikhail имел ввиду под пониманием ООП и что это пониманин дало практически. Потому что сам не могу однозначно определить это понимание, т.к. критери ООП для кода нечеткие, их обычно сводят к компромисам принципов SOLID, GRASP, KISS, YAGNI, DRY, Worse is better и т.п.

Для самих языков парадигма ООП более опеделенная - они либо помогают писать в стиле ООП, либо нет. Знакомые профи считают, что если используется язык ООП, это уже технически ООП, отдельный вопрос к качеству конкретного дизайна, которое и служит в итоге критерием понимания ООП. Как стойной "теории", ООП по-моему нет, скорее ОО-дизайн и uml, которые парадигмой ООП и принципами притянуты к теориям и довелены до ума лучшими практиками. Т.о. ООП практиччески бессмысленно учить, а понять  можно только на практике, за много итераций. И по началу уж точно ООП не облегчает жизнь програмиста.

Когда говорят, что не понимают ООП, у всех это разные вещи и мне интересно что именно непонятно, чтобы вовремя подсказать начинающим. И  точней увидеть основной паттерн непонимания в чужом коде.

Что в ООП можно непонимать для реальной работы/дизайна не так очевидно. Полиморфизм, наверное, самое сложное, в части нюансов статического/динамического связывния и техник избежания явного приведения типов, перекликается и с паттернами и с наследованием. Рефакторинг в ООП стиле - тоже тема непростая, например - не бояться создавать технические классы, которые могут быть только из одной функции или по-другому не похожи на классическое описание объекта. Ещё правильное понимание инкапсуляции - оно полегче, но и правильность применения возмодно проверить только в долгоживущем проекте.
Понять проблематку отдельных паттернов проектирования сложно, слишко глубокие практические корни для начинающих, требующие понимания принципов (SOLID etc.) и нансов реализации поддержки ООП конкретным языком, не всегда  адекватные практике примеры.

Ответы Mikhail дал:

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

"Создать объект, а потом от него создать наследника, использовав методы базового класса, а если очень захочется, то переопределить методы parent-класса, у наследника"
Тоже примерно понятно, что дало понимание наследования и полиморфизма для практики. И опять не очень ясно, что было непонятно до этого.
Я уже не очень понимаю, какие стожности в применении наследования в конкретных языках и, соответственно, как это непонятное проще обьяснить.
Языки предоставляют этот механизм, и часто обязывают им пользоваться как минимум для суперобъекта. Для применения в дизайне, по-моему важней понять, когда наследование не нужно (нарушает инкапсуляцию, LSP и т.п.). С Turbo Pascal тоже немного имел дело (без ООП, формошлёпил немного), там наверное особые усилия нужны именно перейти к парадигме ООП. В Java мне по-началу было больше непонятно наоборот, почему чисто процедурные куски помещаются в объекты, которые не похожи на обьекты по большинству пюопределений и примеров.
Я в принципе не понимал ни того как использовать ни зачем использовать классы. И когда я разобрался в этом вопросе, смог значительно упростить код.
источник

M

Mikhail in 💻 Coding Ru
Andrey Sea
мм? а в чем прикол-то?
Да это двинутый какой-то. Я решил его забанить.
источник

A

Andrey Sea in 💻 Coding Ru
Mikhail
Да это двинутый какой-то. Я решил его забанить.
злой ты ) мне кажется там неудачная шутка была
источник

M

Mikhail in 💻 Coding Ru
Andrey Sea
злой ты ) мне кажется там неудачная шутка была
Мне кажется это спам
источник

A

Andrey Sea in 💻 Coding Ru
окей )
источник

A

Anton in 💻 Coding Ru
Mikhail
Я в принципе не понимал ни того как использовать ни зачем использовать классы. И когда я разобрался в этом вопросе, смог значительно упростить код.
Т.е. не понятно было "зачем все эти сложности" - так правильно сформулировать?
А когда разобрался, понял что они помогают упрощать код.
источник

M

Mikhail in 💻 Coding Ru
Anton
Т.е. не понятно было "зачем все эти сложности" - так правильно сформулировать?
А когда разобрался, понял что они помогают упрощать код.
Да, именно так. Я не учился на програмера, потому могу плавать в определениях.
источник

A

Andrey in 💻 Coding Ru
Всем привет! Интересно тусят ли здесь программисты? Хочу предложить работу в тандеме с дизайнером, выполнять заказы, с меня дезигн, с тебя прописка магических кодов вуду.
Если это ты, пиши в ЛС приятель, я тебя ищу)
источник

D

Dmitry in 💻 Coding Ru
Andrey
Всем привет! Интересно тусят ли здесь программисты? Хочу предложить работу в тандеме с дизайнером, выполнять заказы, с меня дезигн, с тебя прописка магических кодов вуду.
Если это ты, пиши в ЛС приятель, я тебя ищу)
стек какой?
источник

A

Andrey in 💻 Coding Ru
Dmitry
стек какой?
Не понимаю о чем вы
источник

D

Dmitry in 💻 Coding Ru
Какие языки программирования, фреймворки?
источник

A

Anton in 💻 Coding Ru
Dmitry
стек какой?
Магический же )
источник

A

Andrey in 💻 Coding Ru
Dmitry
Какие языки программирования, фреймворки?
Это то самый вопрос, на который я не знаю ответ, я делаю дизайн в Фигме, мне нужен напарник для подключения всего этого дезигна в работу. Заказы бывают разные, кто-то просит верстать через вордпресс и подобные простые коды, сорян не знаю, как это называется. Кто-то прости более сложные версии кодов.

Чувствую себя бестолочью, я не сильно подкован в разработке)
источник