Известным Егор стал благодаря своему блогу, в котором он и начал выкладывать свои будоражащие мир идеи об объектно-ориентированном программировании (ООП), а так же после знаменитого выпуска 105 подкаста "Разбор Полетов", где Егор провел неравный, но весьма увлекательный бой, с хорошо подготовленной группой профессионалов, которые обстоятельно заклевали покритиковали его подход.
Данная рецензия именно на книгу, и меньше на сам подход Егора к ООП.
Хотя на обложке и нарисован кактус, как бы напоминающий нам о плачущих и голодных мышах, книга мне определенно понравилась. Начну с пунктов, по которым она определенно побила подавляющее большинство выпускаемой сегодня технической литературы:
- Размер в 220 небольших страниц. Мне реально приятно читать автора, который в состоянии уложить свою мысль в 200 страниц, а не в 600-800, как, увы, любят делать многие другие авторы. Практически отсутствует вода, никаких вступлений на 15 страниц капитанства. Мне кажется небольшое количество страниц - косвенный показатель качества, лично я готов платить больше за техническую книгу, в которой меньше страниц.
- Короткие примеры без ненужного вспомогательного (boilerplate) кода. Да, понятно, что эти примеры нельзя просто так целиком скопировать в IDE и сразу запустить, но в данной книжке (и во многих других) - этого и не требуется. Короткие примеры, в которых нет ничего лишнего - позволяют лучше понять материал и идеи автора.
Другие плюсы:
- Структура книги весьма удачная, сделана попытка вести читателя от базовых концепций к деталям - и она на мой взгляд удалась в большинстве пунктов.
- Сама книга читалась очень увлекательно, не так много повторений, скучных очевидностей (хехе, наверное мало что из концепций Егора будет "очевидно" неподготовленному слушателю). Полно сюрпризов для знатоков и любителей классического ООП.
Содержание:
- Книга, на мой взгляд, типичный представитель материала "расширяющего горизонты". Особенно мне понравилось сравнение Объекта с живым существом, которое в целом можно сформулировать как "если ты хочешь программировать объектно-ориентировано, ты должен думать как Объект".
- Очень мало из книги можно реально использовать на практике классическому программисту. Тем не менее такие места есть, например про обработку Exceptions можно использовать бОльшую половину главы. Поверьте - пол-главы Егора применимые к "классике" - это много и редкость :).
- Идеи тем не менее довольно интересные, особенно учитывая то, что они бьют по очень больному месту в современной индустрии разработки ПО - Maintenance (поддержка). Мне на практике бесконечно больно видеть, когда команды тратят на баг-фиксы в этой фазе по 4-16 часов на один баг, и считают это нормальным. Я не знаю, помог бы подход Егора действительно так, как он на него уповает, но почему бы не дать сторонникам теории возможность проверки собственных идей на практике. Егор к слову действительно пишет совместно довольно большой командой проекты по своим идеям.
Некоторая критика:
- Идеи Егора не очень подходят к Java, тем не менее Егор не собирается изменять этому языку. На мой взгляд было бы интересно или найти язык, который подходит лучше (может Scala?) или написать свой, сейчас это модно.
- Егор похоже не собирается уходить с позиций, что все остальные делают неправильный ООП. Возможно, было бы проще признать, что его вариант ООП - лишь один из вариантов, и возглавить свое течение, назвав его например TrueOOP (идея Баруха Садогурского) или "Ультра-ортодоксальный ООП" (моё 🙂 ) .
Детали:
- Егор на каждой странице называет основные элементы классического ООП (статические элементы, null, getters/setters и многое другое) "злом". Но не стоит поливать его за это личными оскорблениями - такого добра к нему приходит столько, что он сделал даже специальную страничку с отзывами. Я пока не видел действительно агрессивных нападок от Егора на своих критиков, мне кажется он больше троллит, чтобы получить больше пиара для себя и своих идей.
- Цена книги довольно высока, но приемлима для западного читателя и как мне кажется неподъёмна для жителей СНГ (40 $). На JPoint книгу можно было приобрести с большой скидкой.
Подводя итог - книгу я прочёл с удовольствием, она меня развлекла в хорошем смысле этого слова. Хотя возможно, что положительный отзыв мне дался легко в первую очередь потому, что я не программирую ни классическим, ни новым ООП и особо не собираюсь. :-). Но может Егор нам и про тестирование книгой ответит?