Какая версия ООП? Оригинальное видение Алана Кея? Уродливая современная его форма, которая полностью упускает из виду и, таким образом, обременяет нас причудливым контролем доступа, переменными-членами и т. Д.? Ориентация на наследование? На основе прототипа? Композиционное ООП?
Каждая форма ООП имеет свои сильные и слабые стороны; его защитники и недоброжелатели; его области полезности и его области бесполезности. В ООП нет ничего волшебного, что делает его парадигмой убийцы, и нет ничего адского, что делает его парадигмой убийцы (программистов).
Я не могу указать вам на какие-либо книги или статьи, которые убили мой интерес к ООП как к серебряной пуле (в отличие от одного из многих методов, которые я могу использовать для сохранения жизнеспособности моих проектов). Однако я могу указать на самую забавную критику определенного бренда ООП: Классическая книга Стива Йегге «Казнь в Королевстве существительных» .
Проблема в том, что большинство людей на самом деле не разбираются в объектно-ориентированном программировании, поэтому многие проектируют ОТСТОЯТЕЛЬНО.
Прочтите работы Скотта Амблера, включая его (теперь уже довольно старый) Создание работающих объектных приложений . Это открыло глаза для довольно многих людей.
как насчет казни Стива Йегге в королевстве существительного для java стиля OO
Rick Hickey's Are We There Yet ? - A Deconstruction of Object Oriented Time стала для меня открытием. Это самая логичная критика ОО, с которой я сталкивался.
Возможно, это не совсем то, что вы искали, но взгляните на номер журнала IEEE Software за январь/февраль: Объектно-ориентированный анализ: Is It Just Theory?. Основной вывод заключается в том, что OOA не обеспечивает хорошего соотношения затрат и выгод, поэтому используется слабо.
Учитывая, что OOA не используется эффективно или не поддерживается в "реальном мире", я подозреваю, что для больших проектов разработки общая архитектура системы, развернутая объектная модель и иерархия классов оказываются неоптимальными и плохо понимаемыми (реализуемыми) различными частями команды разработчиков. Вторая статья в том же журнале: Four Trends Leading to Java Runtime Bloat указывает на некоторые общие проблемы ООП, которые препятствуют развертыванию систем Java (ООП) большого объема. Наблюдения, сделанные в этой статье, вероятно, применимы к большинству высокоархитектурных ООП-приложений.
Не воспринимайте это как нападки на ООП, это просто отражает, что нам, как практикам программного обеспечения, предстоит еще много работы по разработке лучших механизмов коммуникации от человека к человеку для передачи очень сложных и абстрактных моделей процессов.
Библия Гедеона объектно-ориентированных шаблонов проектирования, метко названная Шаблоны проектирования . Одна из лучших книг по разработке программного обеспечения, которые я когда-либо читал.
Вы действительно должны увидеть Mr.B. Jacobs's:
(также известный как OOP Oversold.)
Если вам нужна критика объектно-ориентированного программирования, вот что я бы порекомендовал:
Как только вы это сделаете, у вас будет много критики общепринятой интерпретации объектно-ориентированного программирования.
(Подсказка: объектно ориентированный объект во многих отношениях был предназначен для более близкого сходства с моделью вычислений Актера, но общая интерпретация этого фактически является модификацией процедурной / структурированной модели)