lightalloy прочитал(а)

Ноябрь 2017 г.

Abel Avram, Floyd Marinescu - Domain Driven Design Quickly
Domain Driven Design Quickly
Abel Avram, Floyd Marinescu

4 /   4.000 1
Издательство: «C4Media» 2006 г.
ISBN: 9781411609259
Thoughtbot - Ruby Science
Ruby Science
Thoughtbot

4 /   4.000 1

Октябрь 2017 г.

 - Metaprogramming Ruby
Metaprogramming Ruby

0 /   0.000 1
Издательство: «Pragmatic Bookshelf» 2010 г.
ISBN: 9781934356470

Август 2017 г.

Jay Fields, Shane Harvie, Martin Fowler, Kent Beck - Refactoring: Ruby Edition
Refactoring: Ruby Edition
Jay Fields, Shane Harvie, Martin Fowler, Kent Beck

4 /   4.000 1
Издательство: «Addison-Wesley» 2009 г.
ISBN: 978-0321984135

Июнь 2017 г.

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

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

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


«Сделайте так, чтобы внести изменения было просто (осторожно: это может быть сложно), потом внесите простые изменения.»
> Make the change easy (warning: this may be hard), then make the easy change
Кент Бек


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

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

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

По словам самих авторов, у книги 2 цели:
- предложить конкретные приёмы рефакторинга для постоянного использования
- влюбить вас в полиморфизм

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

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

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

Подкасты по книге:
- Why are computers? «Ways to Be Less Clever»
- Greater Than Code
- POODR And Beyond
- Ruby Book Club

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

+2 в избранном Комментировать
Маргарет Этвуд - Орикс и Коростель
Орикс и Коростель
Маргарет Этвуд

4 /   4.308 823 1657 62
Издательство: «Эксмо» 2016 г.
ISBN: 978-5-699-88912-9

Май 2017 г.

Апрель 2017 г.

Март 2017 г.

Henning Koch, Thomas Eisenbarth - Growing Rails Applications in Practice
Growing Rails Applications in Practice
Henning Koch, Thomas Eisenbarth

4 /   4.000 1
Издательство: «Leanpub»

Февраль 2017 г.

Январь 2017 г.

Джон Сонмез - Путь программиста
Путь программиста
Джон Сонмез

2 /   4.077 28 81
Издательство: «Питер» 2016 г.
ISBN: 978-5-496-01915-6

Декабрь 2016 г.

Ноябрь 2016 г.

Jason Fried, David Heinemeier Hansson - REMOTE
REMOTE
Jason Fried, David Heinemeier Hansson

5 /   4.250 17 7
Издательство: «Crown Business» 2013 г.
ISBN: 978-0804137508
Sandi Metz - Practical Object Oriented Design in Ruby: An Agile Primer
Practical Object Oriented Design in Ruby: An Agile Primer
Sandi Metz

5 /   5.000 2 2 1
Издательство: «Addison Wesley» 2012 г.
ISBN: 978-0321721334, 0321721330
Книга о дизайне в Ruby

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

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

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

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

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

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

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

+3 в избранном Комментировать

Август 2016 г.

Чед Фаулер - Программист-фанатик
Программист-фанатик
Чед Фаулер

3 /   4.115 56 75
Издательство: «Питер» 2015 г.
ISBN: 978-5-496-01062-7

Июль 2016 г.

1 2 3