Больше рецензий
20 апреля 2025 г. 17:48
40
5 Отличная книга о создании простого и поддерживаемого кода
РецензияЕдинственная надёжная метрика качества кода – количество "чёрт возьми!" в минуту.
Легендарная книга ставшая классикой и породившая как много восторга, так и споров. Но что точно о ней можно сказать – то, что развитие разработчика можно разделить на "до" и "после" усвоения материала этой книги. Какими бы ни были познания языков программирования, связанных с этим технологий, всё это может оказаться ненадёжным, неэффективным, плохо поддерживаемым без должной дисциплины и подходов к написанию и проектированию кода, которые подробно разбираются в этой книге.
Единственное, я бы не стал советовать эту книгу совсем новичку в разработке. Поскольку большинство советов и рекомендаций значительно лучше понимаются когда есть какая-никакая практика и есть способность критически воспринимать содержимое. А ещё лучше – опыт написания "кривого кода" и понимание какие проблемы он в себе несёт. Чтобы была потребность и возможность закрепить рекомендации из книги на практике. Тогда она способна принести значительно большую пользу, чем её освоение без маломальской практики в разработке.
Хоть большинство иллюстраций представлены на Java, они весьма просты и, думаю, должны быть понятны любому разработчику, который владеет любым си-подобным языком программирования на базовом-среднем уровне.
Из явных минусов книги:
- Некоторые правила "чистого кода" подаются без упоминания негативных факторов, к которым они могут привести в том или ином контексте. Это делает картину неполной. Программист, прочитавший книгу, может пойти заниматься рефакторингом там, где это не нужно, принося тем самым больше вреда, чем пользы.
Например, правило "используйте исключения, вместо кодов возврата ошибки". Нет никакого упоминания, что его применение может привести к значительному ухудшению производительности программы, например, на C++. Или что в некоторых языках программирования или стандартов кода **сознательно** отказались от механизма исключений. Например, Golang, Rust и стандарт кодирования Google Style, который декларирует отказ от исключений в принципе. И как "чистить код" с помощью замены кодов возврата на исключения, где это технически невозможно? И всегда ли это нужно? Не понятно.
- Некоторые главы, сторонних авторов, например глава 11 "Системы" под авторством Кевина Дин Уомплера, написаны скверно, не содержат в себе чего-то полезного. Непонятно какой смысл их включать в книгу, если эти главы можно смело пропустить и ничего не потерять.
В общем, хорошая и полезная книга при должом применении. Рекомендую её всем разработчикам, у которых уже есть минимальный опыт хотя бы на основе учебных или pet-проектов.