Обложка статьи «Стоит прочитать: обзор книги Роберта Мартина «Принципы, паттерны и методики гибкой разработки на языке С#»»

Стоит прочитать: обзор книги Роберта Мартина «Принципы, паттерны и методики гибкой разработки на языке С#»

Роман Князев

Роман Князев, TeamLead Unity-направления IT-компании Omega

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

Имя автора говорит само за себя – Роберт Мартин, в широких кругах Дядя Боб. Из-под его клавиатуры вышли такие культовые книги, как «Чистый код», «Идеальный программист», «Чистая архитектура» и, конечно, «Принципы, паттерны и методики гибкой разработки на языке С#», которую сегодня рассмотрим.

Введение

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

Гибкая разработка

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

TDD

Чем проще проводят тесты, тем раньше видно отклонения. Чем чаще проводится тестирование, тем выше вероятность получить рабочий продукт на любом этапе разработки.

Следующая важная часть – это тестирование. Боб знакомит нас с TDD, поскольку разработка через тестирование имеет существенные плюсы. Во время разработки тестов большая часть разработчиков продумывают архитектуру в целом. TDD позволяет экономить на работе тестировщиков и выпускать более чистые билды, значительно сокращая стадию полировки.

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

Рефакторинг

Рефакторинг – это как уборка со стола после обеда. В первый раз, когда вы решаете не убирать, обед заканчивается быстрее. Но отсутствие чистой посуды и места для работы приведет к тому, что на следующий день обед придется готовить дольше. И поэтому вы снова не захотите делать уборку.

В этой главе он знакомит нас с процедурой рефакторинга. После нее, как после трудов высококлассного клининг-менеджера, код становится значительно быстрее, чище и приятнее. Рефакторинг нужно проводить после того, как задача завершена. Роберт Мартин советует пробежаться еще раз: попросить коллегу взглянуть свежим взглядом. Так с каждым разом код будет становиться чище. Полностью поддерживаю такой подход. Ценность этой главы в том, что старина Мартин показывает на практических примерах, как нужно проводить данную процедуру.

Эпизод

Эпизод – это одна из самых интересных глав. Здесь нам на практике показывают игру в боулинг. Мы видим живое общение между двумя специалистами. Диалоги максимально приближены к боевому сценарию, когда правки поступают от заказчика нескончаемым потоком, и программисту нужно адаптировать свое детище под изменения требований. Сама по себе глава уникальна, и сложно найти аналогичные разделы в типовых книгах по программированию, где нам дают голую теорию без практики.

Гибкое проектирование

Следующая часть дает нам вводную в объектно-ориентированную разработку программного обеспечения. Автор кратко объясняет, что это такое, учит управлению сложностями и методам оптимизации.

Ценность заключается в том, что он объясняет значения таких аббревиатур, как SRP, OCP, LSP, DIP, ISP доступным языком, который понятен даже студенту первых курсов. Крайне рекомендую к прочтению тем, кто не смог вспомнить хотя бы два значения.

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

Паттерны

Куда без паттернов! Любая серьезная книга по программированию должна включать оду о любви к паттернам и примеры использования. Паттерны – это то, что мы применяем каждый день и должны уметь внедрять на практике. Несмотря на это, рассуждая о работе программиста, все чаще слышу фразу от разработчиков разного уровня: «Не знаю паттерны и прекрасно обхожусь».

Знать паттерны необходимо, они существенно ускоряют разработку. Вся наша работа состоит из разнообразных паттернов. Действительно уникальные вещи встречаются редко, и при встрече с чем-то действительно уникальным стоит написать шаблон, который следующий участник команды разработки сможет использовать в будущем.

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