Больше рецензий

1 февраля 2017 г. 20:22

157

5 Книга о дизайне в Ruby

Название «Poodr» в этом случае хорошо отражает суть книги.

В ней мало «воды» и много полезной информации. Несмотря на небольшой объём, даются достаточно подробные объяснения, и язык несложный. Должна подойти и новичкам (не совсем зелёным), и опытным разработчкам.

В начале книги рассказывается о том, что такое дизайн и зачем он нужен, как принимать решения по дизайну в постоянно изменяющемся мире и не сойти с ума.
(Спойлер: нужно проектировать так, чтобы легче и дешевле было вносить изменения в приложение, а не так, чтобы было «кравиво» и «как в книжках пишут»; особенно полезно об этом задуматься, когда нужно принять решение: выбросить всё и переписать с нуля или работать с тем, что есть.)

В последующих главах рассматриваются разные принципы ООП, в качестве примеров кода используется приложение для фирмы, занимающейся организацией велопоходов, постоянно переживающее изменения, дополнения и рефакторинг.
Вот некоторые примеры тем из книги:
- принцип единственной ответственности (Single Responsibility Principle)
- слабая связанность (Louse Coupling)
- изоляция зависимостей
- внедрение зависимости (Dependency Injection)
- утиная типизация (Duck Typing)
- закон Деметры (the Law of Demeter)
- разработка оптимальных интерфейсов, в т.ч. рассматривается то, как реализуются интерфейсы в других языках, что позволяет шире посмотреть на объектно-ориентированное программирование, не застревать в руби-мире (для таких, как я)
- наследование
- принцип подстановки Барбары Лисков (Liskov substitution principle)
- шаблонный метод (Template method pattern)
- композиция, агрегирование, выбор между композицией и наследованием

Также рассматриваются более общие вопросы: как подступиться к разработке приложения с нуля, применение UML-подобных диаграмм, TDD, общие советы по дизайну, например, когда стоит отложить решение и даже потерпеть дублирование кода.

Последняя глава посвящена тестированию. Подробно рассматривается, как тестировать разные варианты решений, описанные в предыдущих главах. Приведены примеры на minitest.

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