Книга: Элегантные объекты

Прочитал книгу «Элегантные объекты» Егора Бугаенко: https://www.elegantobjects.org

Автор описывает свой взгляд на «правильное ООП»,  даёт практические рекомендации и показывает наглядные примеры, итоговая цель которых – хорошо поддерживаемый код! Я полностью разделяю эту ценность: поддерживаемость – это одна из важнейших характеристик кода.

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

А также, чего следует избегать при написании поддерживаемого кода:  недостатки моков, проблемы статических методов, классов-утилит и синглтонов, NPE ошибка и применение null vs optional vsпустой объект.

Кстати, интересный вопрос, над которым я раньше не думал: чем отличаются синглтоны и классы, целиком состоящие из статических методов? Синглтон в тестах можно подменить, если есть метод setInstance().

Но есть много радикальных идей, которые вызывали у меня сопротивление и отрицание.

На сколько я понял, материал книги основан на блоге автора: https://www.yegor256.com. Зачастую, когда у меня возникал очередной вопрос-возражение, в конце главы я обнаруживал свой вопрос в виде вставленного комментария от одного из читателей блога и тут же ответ Егора. Удивительно, на сколько мои вопросы совпадали с приведёнными комментариями. К сожалению, ответы меня так и не убедили, многие вопросы остались. Чтобы лучше прояснить позицию Егора, думаю, стоит более глубоко изучить его блог, почитать комментарии, возможно влиться в тусовку в телеграме https://t.me/elegantobjects и https://t.me/painofoop.

В итоге, станет ли код более поддерживаемым, если писать ПОЛНОСТЬЮ по описанным рекомендациям? Книга меня не убедила. Но, по крайней мере, я получил удовольствие от чтения. Рекомендую.