Дискуссии о чистоте того или иного метода или архитектуры стали повсеместными. «Ты не использовал этот шаблон здесь… Нужно применить интерфейс там… Что ты за программист, если не используешь в своем проекте классическую чистую архитектуру?».

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

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

Чистый код легче читать, а значит, и проще сопровождать. Он менее подвержен ошибкам и багам: в нем их легче найти и исправить. Чистый код используется повторно чаще и перенацеливается на другие проекты без больших изменений.

Но есть ситуации, когда его применение нецелесообразно.

Временны́е ограничения

Иногда сроки поджимают, нет времени писать чистый код, а разработка и реализация проекта приоритетнее качества кода. Все равно важно стремиться к чистому коду, где он возможен, даже за счет увеличения сроков: так улучшается долгосрочная сопровождаемость проекта, в итоге экономится время и усилия.

Код, некритичный для проекта

Чистый код не стоит писать для некритичной части кода проекта, которая вряд ли будет сопровождаться в будущем. Например, небольшой метод расширения, который применяется крайне редко. Не важно, используете вы LINQ или цикл for: работает себе, вы к нему никогда и не притронетесь.

Унаследованный код

Полный рефакторинг унаследованного кода для его соответствия стандартам чистого кода нецелесообразен: если код сложный и сильно запутан, его рефакторинг чреват непредусмотренными побочными эффектами. Чтобы улучшить читаемость и сопровождение кода, потребуются его доработки.

Прототипирование

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

Сложные требования

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

Экспериментальный код

При экспериментировании с новыми технологиями и подходами часто фокусируются на быстром тестировании идеи, поэтому писать чистый код нецелесообразно. Если идея рабочая и вы знаете, как ее реализовать, реализовывайте в реальном проекте «по-чистому».

Устаревший код

Если часть кода объявляется устаревшей и неиспользуемой в будущем, рефакторить ее для соответствия стандартам чистого кода не стоит.

Код, специфичный для одного прецедента

Чистый код не стоит писать для части кода, специфичной для одного прецедента, которая вряд ли будет использоваться повторно.

Хакатоны и подобные ситуации

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

Отметим, что это лишь несколько примеров и целесообразность использования чистого кода зависит от конкретных условий проекта. Чистый код  —  важная практика, но она не всегда и не в каждой ситуации подходит. Но все равно, чтобы в итоге улучшить качество и сопровождаемость кодовой базы, важно по возможности стремиться к чистому коду.

Заключение

Чистый код  —  важная практика программирования для улучшения качества и сопровождаемости кодовой базы. Но есть ситуации, когда его применение нецелесообразно из-за временны́х ограничений, унаследованного кода, прототипирования, сложных требований и других причин. И тогда традиционный подход чистого кода игнорируется, не забывая о последствиях.

Однако в целом желательно писать чистый код, так как мы видим не всю картину и в ближайшем будущем вроде бы небольшой метод может стать проблемным.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Tobias Streng: Clean Code and When Not To Use It

Предыдущая статьяКак развернуть приложение на Vercel
Следующая статьяАвтоматизируем создание отчета о расходах с помощью Python