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

Перед прочтением авторы предлагают потратить полчаса на решение задачи: вывести на экран текст песни «99 бутылок пива»

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

«Сделайте так, чтобы внести изменения было просто (осторожно: это может быть сложно), потом внесите простые изменения.»

Make the change easy (warning: this may be hard), then make the easy change Кент Бек

Эта книга – альтернатива воркшопу, поэтому в процессе чтения рекомендуется воспроизводить весь рефакторинг по шагам и представлять, что вы на воркшопе :)

Авторы пишут, что книга может перевернуть представление о TDD: изменения вносятся совсем маленькими кусочками, за 1 раз редактируется одна строчка кода, после каждого шага прогоняют тесты и они должны оставаться зелёными.

Если у вас уже большой опыт программирования и раньше вы не использовали этот подход, то вам будет сложно принять его. Мне трудно применять все правила, особенно при работе над большими и далеко неидеальными проектами. Но присмотреться к подходу полезно: таким образом легче определить верные абстракции - решение приходит само после выполнения серии маленьких шагов. Потренироваться можно при решении кат.

По словам самих авторов, у книги 2 цели:

  • предложить конкретные приёмы рефакторинга для постоянного использования
  • влюбить вас в полиморфизм

Думаю, не стоит воспринимать “99 бутылок”, как поиск решения конкретной задачи. Скорее, это демонстрация техник рефакторинга и принципов ооп на этом примере.

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

Мои заметки по книге

Подкасты по книге:

Альтернативное мнение и обсуждение на реддите