Подтвердить что ты не робот

Некоторая твердая критика ООП?

Я хочу попросить вас предоставить мне некоторые статьи (возможно, книги), которые, возможно, вы нашли очень убедительной критикой методологии ООП.

Я прочитал некоторые в WWW по этой теме, и я действительно не нашел "окончательного демотиватора".

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


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

4b9b3361

Ответ 1

Какая версия ООП? Алан Кей оригинальное видение? Обманутая современная форма, которая полностью игнорирует точку и, таким образом, обременяет нас странным контролем доступа, переменными-членами и т.д.? Наследование-ориентированный? Прототип на основе? Композиционный ООП?

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

Я не могу наказать вас ни в каких книгах или статьях, которые убили мой интерес к ООП в качестве Серебряной пули (в отличие от одного из многих методов, которые я могу использовать, чтобы сохранить жизнеспособность моих проектов). Я могу указать на самую смешную критику конкретного бренда ООП: Стив Йегге классический "Исполнение в Королевстве существительных" .

Ответ 3

Если вы хотите критиковать программирование OO, вот что я бы рекомендовал:

  • Узнать Smalltalk
  • Узнать Erlang
  • Узнать схему

Как только вы это сделаете, у вас будет много критики в отношении общей интерпретации программирования OO.

(Подсказка: OO во многом предназначалось для более близкого сходства с моделью вычислений Actor, но общая интерпретация ее фактически является модификацией процедурной/структурированной модели)

Ответ 4

Проблема в том, что большинство людей действительно не знают объектно-ориентированного программирования, поэтому многие проекты SUCK.

Прочитайте работы Скотта Амблера, в том числе его (теперь довольно старого) Приложения для объектов здания, которые работают. Это было замечательно для многих людей.

Ответ 5

Возможно, не совсем то, что вы искали, но посмотрите на журнал журнала IEEE в январе/феврале: Объектно-ориентированный анализ: это просто Теория?. Основной вывод состоит в том, что OOA не обеспечивает хорошее соотношение затрат и выгод, поэтому плохо используется.

Учитывая, что OOA не используется эффективно или не поддерживается в реальном мире, я подозреваю, что для крупных проектов разработки общая архитектура системы, развернутая объектная модель и класс hiearchy оказались недостаточно оптимальными и плохо понятными (реализованными) различные части команды разработчиков. Вторая статья в том же журнале: Четыре тенденции, ведущие к Java Runtime Bloat, указывают на некоторые распространенные проблемы ООП, которые мешают развертыванию высокообъемной Java ( ООП). Замечания, сделанные в этой статье, вероятно, применимы к наиболее высокоархивированным приложениям ООП.

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

Ответ 6

Вы действительно должны увидеть Mr. Б. Джейкобс:

Опущенные мифы OOP

(также известный как OOP Перепродан.)

Ответ 7

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

Единственная фиксированная точка - это действие, предикат предложения.

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

В ООП вы можете записать файл по крайней мере тремя способами:

file.write(data);

или

data.writeToFile(file);

или

OperatingSystem.write(file, data);

Какой объект должен реализовать метод? Вам тоже нужно подумать об этом. В процедурной форме вы, вероятно, пишете

write(file, data);

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

(Файл и данные скважины могут быть не лучшим примером, но вы, вероятно, видите точку)

Ответ 8

http://cat-v.org имеет отличную страницу Объектно-ориентированное программирование.

Большая часть страницы состоит из юмористических, но не очень информативных цитат. Однако в нижней части страницы есть ряд ссылок на статьи, оспаривающие ООП. Это:

Если вас интересуют альтернативы объектно-ориентированному программированию:

  • cat-v.org. На своей странице "about": Cat-v.org размещает серию сайтов, посвященных различным предметам, которые разделяют индивидуальную интеллектуальную перспективу, ставят под сомнение православие и стимулируют элитарность и высокие стандарты по темам от разработки программного обеспечения до политики, проходя мимо искусства и журналистики и ничего интересного.

  • Структура и интерпретация компьютерных программ. В частности, преподаётся функциональное программирование. Здесь можно бесплатно найти здесь, для продажи здесь. Я не могу рекомендовать это достаточно высоко. Это абсолютно революционно. Это изменит ваш образ.

  • Любые и все записи/видео/лекции от Rob Pike и Steve Yegge. Особый интерес представляет Yegge Whirlwind Languages ​​Tour.

Ответ 9

Я бы рекомендовал изучить другую парадигму программирования или прочитать аргументы pro для определенных парадигм (http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf). Помимо ООП, я думаю, что наиболее широко используется функциональная парадигма (поиск f.e. "Зачем важно программирование" ), но и взглянуть на другие. Когда вы начинаете смотреть на программирование с другой точки зрения, ошибки OOP начинают появляться автоматически.

Простое упражнение: определите объекты IPerson, CMale и CFemale и реализуйте методы "секс" и "воспроизводите".

Ответ 11

Гидеонская библия объектно-ориентированных шаблонов дизайна, точно названная Шаблоны проектирования. Одна из лучших книг по дизайну программного обеспечения, которые я когда-либо читал.