Переходим к следующий рекомендации по написанию кода, о которой было уже так много сказано, что существует специальный акроним для наименования этого правила – DRY – Don’t Repeat Yourself – Не повторяйся. С проблемой дублирования кода сталкивается практически каждый начинающий программист. Да и неначинающий иногда тоже…
Казалось бы, что может быть плохого в том, что я воспользуюсь волшебным сочетанием Ctrl+C и Ctrl+V, и просто продублирую участок кода вместо того, чтобы выделять отдельный метод. А изначально ничего страшного не произойдет. Возможно даже удастся быстрее решить возникшую проблему и перейти к другим задачам.
Проблемы начинают появляться на этапе поддержки и внесения изменений. Если одинаковая логика представлена в нескольких местах приложения, то для того, чтобы сделать даже маленькое исправление необходимо найти все повторяющиеся места. Если таких мест два – еще куда не шло, но, если их 3, 5, 10… Человеку свойственно допускать ошибки, можно случайно пропустить и не внести правки в одном участке кода. И тогда начинается очень долгий и кропотливый процесс отладки, который может потребовать на порядок больше времени, чем если бы изначально ты выделил отдельный метод.
Как я уже писал в предыдущей статье из этой серии – не бойся выделять методы. Это улучшает как повторное использование, так и удобочитаемость кода.
Но это не все, что вложено в этот принцип. Сюда же относится и то, что не нужно изобретать велосипед. То есть, если уже существует готовая и надежная библиотека или фреймворк, решающая возникшую проблему – практически никогда не нужно создавать свою собственную с нуля. Это потребует намного больше сил и времени, и зачастую выйдет хуже. Потому что библиотеки зачастую разрабатываются либо командами разработчиков, либо развиваются как opensource проекты. Они протестированы тысячами разработчиками во множестве проектов, многие ошибки уже были найдены и исправлены, есть ответы на часто возникающие вопросы. А создавая все с нуля со всем этим еще предстоит столкнуться.
Лучший способ поддержания этого принципа – просто задавать себе вопрос во время кодинга, а не повторяюсь ли я? И если ответ да, то лучше потратить время на начальном этапе и на свежую голову устранить дублирование.
Но при этом еще важно не перестараться. Не нужно делать универсальные методы, которые будут подстраиваться под решение различных проблем с помощью параметров. Не забывай, что метод должен решать одну единственную проблему, и, если эти проблемы будут похожи, но все-таки логически отличаться – лучше выделить отдельные методы, а совпадающую логику вынести в еще один.
Держи свой код чистым, а ум светлым и тогда точно сможешь создавать отличные системы, которые будет приятно поддерживать и развивать.
Большое спасибо за прочтение! Пожалуйста, поставь лайк и подпишись на канал, чтобы не пропустить свежие статьи. Этим ты очень поможешь развитию блога!
Также рекомендую прочитать статью Что такое функциональное программирование