Покупал эту книгу с двояким чувством. С одной стороны, интересная тема, с другой… ну что там может быть нового? Полистал, почитал, выхватил взглядом пару интересных мыслей и купил. И не жалею. Нового действительно ничего не узнал, но читать было интересно, так что, да, не жалею.
Надо сказать, что совсем мимо книга не прошла. В очередной раз вспомнил, почему программировать нужно на уровне интерфейсов. В очередной раз, корил себя, что не делаю этого. В очередной раз прочитал про прописные истины: наследование, полиморфизм и инкапсуляцию. Стал свидетелем очередного спора между наследованием и композицией. Пополнил коллекцию примеров задач, в которых ООП выгоднее процедурного стиля. Узнал парочку интересных книг, цитируемых автором. В общем, было не скучно, и даже полезно. Полезно для меня, но будет ли полезно для вас?
Для кого эта книга.
На обложке гордо красуется надпись “Уровень пользователя: Опытный”. Но мы-то с вами понимаем, что это скорее маркетинговый ход. Да и "уровень пользователя" — формулировка какая-то размытая: пользователь чего? Если вы опытный адепт ООП стиля — для вас эта книга будет скорее занимательным чтивом, где можно в чем-то согласится с автором, а в чем-то и поспорить. Если же вы чувствуете себя неуверенно во всем этом модном ООП — книга для вас. Я подготовил небольшой список пунктов, которые помогут понять, нужна ли вам эта книга.
Итак, эта книга для вас, если:
- Вы считаете что ООП — это просто модный тренд, который пройдет через пару лет;
- Вы не вполне понимаете разницу между Интерфейсом и Абстрактным классом;
- Вы считаете что Наследование — лишняя фича, запутывающая код;
- Вы не знаете, что такое Композиция, а погуглив, понимаете, что вам и без нее хорошо;
- Вы не используете Абстрактные фабрики, ведь всегда есть new;
- Вы не знаете принцип действия простейших паттернов проектирования. Вообще-то, конкретно про паттерны в книге очень мало, разве что Abstract Factory, однако, если вы не знаете самых распространенных — где то у вас пробел.
Вывод.
Если в общем, то впечатление о книге очень приятное. Примеры кода даны на Java. Лично я от этого языка далек, но код понятный, никаких вопросов не вызывал. В конце глав все примеры дублируются на С#. Книга не мудреная, написана легко, соответственно, легко читается. Много интересных примеров про животных, таксистов, и конечно же, про мосты. Все концепции разжеваны, но не в стиле: “Читатель дебил, давайте сто раз повторять ему одно и то же”.
Помогает легко перейти с процедурного стиля на ООП, разложить по полочкам накопившиеся знания, и дает тот необходимый багаж, который поможет в дальнейшем, более детальном изучении объектно-ориентированной парадигмы программирования.
Благодарности.
Хочу выразить особую благодарность билетику на автобус, служившему мне верой и правдой, в качестве закладки, весь период чтения книги.
Бонус.
И в качестве бонуса, немного цитат из книги.
… программисты могут применять ровно столько объектно-ориентированных функций, сколько нужно для того, что бы сделать приложения непонятными для остальных программистов, как использующих, так и не использующих объектно-ориентированные языки.
Если вы поместите десять человек в одну комнату, и попросите каждого из них спроектировать что-то независимо от других, то получите десять абсолютно разных результатов проектирования — и в этом не будет ничего плохого.
Пожалуй наиболее важный момент при проектировании класса — определение его аудитории и пользователей.
… интерфейс хорошо спроектированного объекта описывает услуги, оказание которых требуется клиенту. Если класс не будет предоставлять полезных услуг пользователям, то его вообще не следует создавать.
Техническое задание должно обеспечить полное понимание системы для любого человека, прочитавшего этот документ. Техническое задание должно представлять полную систему и ясно описывать то, как система будет выглядеть.
Основная цель заключается в том, что бы всегда стремиться создать систему, которая будет гибкой, но не настолько сложной, что может рухнуть под собственной тяжестью.
Оглавление
Первая глава
Страничка на Ozon.ru
Автор: voff