Изменения в коде могут быть абсолютно разными, выполняться с разными целями, приводить к разным последствиям. Сегодня мы поговорим об одном из таких изменений, которое вызывает немало вопросов у всех, кто не так тесно связан с написанием кода. Что такое рефакторинг кода? Когда он применяется, какие последствия несет, чем может быть опасен - все это мы рассмотрим в данной статье.
Что такое рефакторинг кода и зачем он нужен
Рефакторинг - это процесс изменения кода с целью сделать его более читаемым, чистым и удобным для разработчиков. В отличии от оптимизации, или других изменений, рефакторинг не предполагает никаких изменений в работе программы, а работа ведется непосредственно с пригодностью кода для дальнейшей работы с ним.
Это очень важный процесс, особенно когда на проекте часто меняются разработчики или привлекаются третьи лица, которым каждый раз нужно заново разбираться в коде предшественников. Но даже если у вас постоянная команда, но при этом непостоянный, довольно гибкий проект, в который часто вносятся изменения, рефакторинг должен стать его обязательной частью.
Говоря простым языком, рефакторинг можно сравнить с уборкой, когда вы выбрасываете ненужные вещи, нужные - сортируете и складываете по местам, а сломанную мебель, которая держалась на скотче, замениваете на новую или ремонтируете должным образом. В общем, делаете все для того, чтобы вам было удобно в вашем жилье, не приходилось тратить время на поиски нужных вам вещей и любой ваш гость мог найти то, что будет необходимо.
Когда нужен рефакторинг
Теперь, когда мы разобрались с тем, что такое рефакторинг, давайте взглянем на причины его проведения. Если в вашей компании, или на вашем проекте, рефакторинг не входит в стандартный перечень работ над программным обеспечением, вам стоит внимательно рассмотреть организационные процессы, ведь в них могут быть звоночки, которые укажут на необходимость прибегнуть к рефакторингу кода.
Одна из таких ситуаций - когда разработчики, только пришедшие на проект, вынуждены тратить достаточно много, и даже чрезмерно много времени на то, чтобы разобраться в коде прежде, чем начать продуктивную работу. Так, вы теряете драгоценное время, которое в разработке просто неразрывно связано с бюджетом.
Также любые доработки на проекте могут затягиваться, по причине того, что заложенного времени оказалось недостаточно, чтобы изучить исходный код.
Но могут возникать и такие ситуации, когда, например, при необходимости внести какие-то изменения в готовые участки кода программисты вообще не могут назвать вам точные сроки, ведь им сначала нужно разобраться. При этом неизвестно, сколько на это уйдет времени, а рисковать и ставить себе невыполнимые дедлайны никто не захочет. Воспринимайте такие ситуации не как намек, а как четкое и беспрекословное руководство к действию - проводить рефакторинг.
И еще одна причина, по которой вам стоит задуматься о переписывании кода, это апдейты языков программирования и фреймворков. Дело в том, что технологии не стоят на месте, и некоторые возможности, которые раньше требовали описания, например, в десять строк, теперь можно осуществить в одной строке. Не забывайте обновлять свой код и идти в ногу со временем.
Как делают рефакторинг
Внося регулярные изменения и проводя периодические очистки кода вы поспособствуете нормализации сроков выполнения задач, ведь сможете избежать непредвиденных задержек. Более того, вы ускорите и упростите процесс внесения любых изменений, а также поиска и исправления ошибок. Также, как вы уже могли понять, вы упростите работу нынешним и будущим участникам проекта, сделав код понятным и читаемым для всех, независимо от уровня осведомленности с проектом и авторства кода. Ну и, конечно, вы сможете усовершенствовать архитектуру будущего программного решения, что поможет при необходимости оптимизации или других нефункциональных изменений.
Но чтобы достичь всех этих эффектов, существуют определенные методы, которые помогают сделать этот процесс более продуктивным, целенаправленным и эффективным.
Методы рефакторинга
Для того, чтобы не слепо и долго править в полотне кода все, что только вздумается, или что сможет найти разработчик, есть достаточно простой подход. Существуют несколько шагов, которые сделают ваш код значительно чище. Давайте взглянем, что же нужно делать и на что обращать внимание:
- Удаляем мертвый код. В первую очередь, имеет смысл избавиться от ненужных участков кода, которые не выполняют никакую функцию. Такой код может появиться по ошибке разработчиков или ошибке в требованиях, или из-за изменений, которые были внесены в соседние участки кода. Нерабочие строки только загромождают рабочее поле и мешают быстро вникнуть в существующий код, поэтому с их удаления и стоит начать.
- Удаляем дубли. Действия в программах часто повторяются, и если для одинаковых действий в разных местах написаны отдельные блоки программного кода, это только усложнит задачу. Ведь если в этом действии потребуются изменения, их придется вносить несколько раз в нескольких местах.
- Правильно называем элементы. Все переменные, классы и функции должны называться по объекту или действию, которое они обозначают. Тогда сразу будет понятно, какой участок кода за что отвечает. Это существенно упростит процесс ознакомления с кодом, когда к нему нужно будет вернуться.
- Сокращаем слишком длинные элементы. Сюда относятся функции, методы, классы и списки параметров в каждому из них. Каждый из этих элементов не должен занимать больше 20-30 строк. Если это так, рекомендуем разбить их на составляющие и сделать один обобщающий элемент, который будет обращаться к дочерним.
- Обратите внимание на комментарии. Если разработчик объясняет свой код, это первый и главный показатель того, что сам по себе код не читаем. Изучите комментарии и попробуйте выяснить, как можно изменить те участки, к которым они относятся. Если же вам пришла мысль оставить комментарий в коде, отбросьте ее и отправляйтесь искать более “чистые” варианты реализации нужного вам функционала.
- Проверьте соседние участки. Всегда, когда вносите любые изменения в программный код, сразу же проверяйте соседние участки, ведь в них могут требоваться аналогичные или взаимосвязанные изменения. Это избавит вас и от дальнейшего поиска объектов для рефакторинга, и от различных ошибок, которые можно случайно спровоцировать.
Конечно, это не все способы сделать ваш код чище и читабельнее, но это ключевые моменты, которые помогут добиться прогресса.
Проблемы рефакторинга
Рефакторинг кода существенно упрощает и ускоряет разные операции с кодом, что положительно сказывается на общей продуктивности работ на проекте. Но тем не менее, помните, внедряя в свои процессы рефакторинг, что это действие также имеет свои подводные камни.
Не стоит слишком увлекаться этим процессом, чтобы не сделать хуже.
В чём опасности рефакторинга
Самое страшное, что можно сделать при рефакторинге - это чрезмерно увлечься и начать переделывать абсолютно все. Во-первых, это лишняя трата времени, которая не улучшит вашу работу. А во-вторых, в таком рвении легко сделать только хуже. Внося слишком много изменений вы можете спровоцировать новые ошибки или нарушить функциональность и структуру вашего программного продукта.
Еще одна проблема, связанная с рефакторингом - это прикрывание некомпетентности некоторых сотрудников. Дело в том, что бывают случаи, когда разработчики, прикрываясь рефакторингом, не выполняют основные задачи по разработке. А это может привести к задержкам, срывам сроков, сбоях в работе всей команды. Если видите такое на своем проекте, попробуйте для начала обсудить с сотрудником приоритеты. Но если это не помогло, обратите свое внимание на ситуацию более предметно.
Выводы
Рефакторинг - важный и необходимый процесс, который помогает ускорить работу в будущем, при небольших, но продуктивных действиях, выполненных в настоящем.
Его стоит проводить на масштабных проектах или при большой текучке кадров, когда читаемость кода - необходимое условие корректной и продуктивной работы команды. Но чистый код важен на любом проекте, ведь помогает быстрее находить и исправлять ошибки при тестировании, а это уже существенно.
Прибегая к рефакторингу на своем проекте необходимо в первую очередь обращать внимание на мертвый код, дубли, названия и объемы элементов, а также комментарии к коду. И не забывайте проверять соседние участки кода.
Рекомендуем делать регулярные и небольшие изменения, чтобы не сделать хуже и не увлечься этим процессом больше необходимого. Так, вы будете поддерживать код в чистом состоянии, и у вас не будет необходимости проводить “генеральную уборку”.
Мы в WEZOM стремимся создавать масштабируемые ресурсы, а потому уделяем много внимания правильности и чистоте кода. Это один из факторов успеха наших проектов.