Рецензии на книгу «Practical Object Oriented Design in Ruby: An Agile Primer»

ISBN: 978-0321721334, 0-321-72133-0
Год издания: 2012
Издательство: Addison Wesley
Серия: Addison-Wesley Professional Ruby
Язык: Английский

The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications



Ruby’s widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-term maintenance or evolution. The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples.



Sandi Metz has distilled a lifetime of conversations and presentations about object-oriented design into a set of Ruby-focused practices for crafting manageable, extensible, and pleasing code. She shows you how to build new applications that can survive success and repair existing applications that have become impossible to change. Each technique is illustrated with extended examples, all downloadable from the companion Web site, poodr.info.



The first title to focus squarely on object-oriented Ruby application design, Practical Object-Oriented Design in Ruby will guide you to superior outcomes, whatever your previous Ruby experience. Novice Ruby programmers will find specific rules to live by; intermediate Ruby programmers will find valuable principles they can flexibly interpret and apply; and advanced Ruby programmers will find a common language they can use to lead development and guide their colleagues.



This guide will help you

Understand how object-oriented programming can help you craft Ruby code that is easier to maintain and upgrade
Decide what belongs in a single Ruby class
Avoid entangling objects that should be kept separate
Define flexible interfaces among objects
Reduce programming overhead costs with duck typing
Successfully apply inheritance
Build objects via composition
Design cost-effective tests
Solve common problems associated with poorly designed Ruby code

Развернуть

Лучшая рецензия на книгу

Оценка: 5  /  5.0
Книга о дизайне в Ruby

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

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

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

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

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

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

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

Добавить

Поделитесь своим мнением об этой книге, напишите рецензию!

Текст вашей рецензии

У вас есть ссылка на рецензию критика?

348 день
вызова
Я прочитаюкниг Принять вызов