November 23, 2020

О рефакторинге

Рефа́кторинг (перепроектирование кода) — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований. Поскольку каждое преобразование маленькое, программисту легче проследить за его правильностью, и в то же время вся последовательность может привести к существенной перестройке программы и улучшению её согласованности и чёткости.

Проще говоря, рефакторинг — это, в первую очередь, превращение грязного кода в чистый.

Зачем нужен чистый код?

  • Чистый код проходит все тесты. Если программа проходит только 95% тестов, значит где-то у вас завелся грязный код. Если у вас вообще нет тестов, вы не проходите этот пункт автоматически.
  • Чистый код очевиден для других программистов. Плохое именование переменных, раздутые классы и методы — всё это размывает очевидность кода.
  • Чистый код не содержит дублирования. Если приходится изменять участок кода с дублированием, нужно будет не забыть внести эти же изменения и в других местах, где код повторяется.
  • Чистый код содержит минимум классов и других движущихся частей. Чем меньше кода, тем меньше его нужно держать в голове. Чем меньше кода, тем меньше вероятность его сломать.
  • Чистый код легче и дешевле поддерживать.

Когда следует проводить рефакторинг?

Рефакторингом следует заниматься постоянно понемногу. Надо не решать проводить рефакторинг, а проводить его, потому что необходимо сделать что-то еще, а поможет в этом рефакторинг.

Правило трех

  1. Делая что-то в первый раз, вы просто это делаете.
  2. Делая что-то аналогичное во второй раз, вы морщитесь от необходимости повторения, но все-таки повторяете то же самое.
  3. Делая что-то похожее в третий раз, вы начинаете рефакторинг.

Когда делаете новую фичу

  • Рефакторинг помогает понять чужой код. Если код, в который нужно добавить новую фичу, недостаточно ясный, рефакторинг позволяет сделать его очевидней для вас и для того, кто будет работать с ним в будущем.
  • Рефакторинг облегчает написание нового кода. После рефакторинга добавление новой фичи происходит значительно более гладко и занимает меньше времени.

Когда исправляете баги

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

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

Во время код-ревью

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

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