Микрорефакторинг, О Котором Мы Так Часто Забываем



Введение Со временем код становится все более запутанным и сложным.

Когда-то элегантные методы превращаются в код «спагетти» из тысяч строк.

Конечно, до определенного момента проще просто добавить в метод новое условие или цикл.

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



Проблема

Метод увеличивается в размерах и его обслуживание существенно усложняется.

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



Код

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

public void process() { if (condition1) { .

if (condition2) { .

for (condition3) { .

if (condition4) { .

} } } else if (condition5) { .

} else if (condition6) { .

} } else { .

} }

Этот код не поддерживается.

Рефакторинг — это сложно.

Гораздо проще добавить еще одну ветку и забыть о ней.

Уровень вложенности структур также высок.



Рефакторинг

Если вместо «.

» будет объемный код, то размер метода легко может достигать нескольких тысяч строк.

Два рефакторинга, исправляющих ситуацию:

Выбор метода
Мы разделяем большие участки кода на отдельные методы.

Сложность методов будет значительно ниже.

Не бойтесь, что ваши методы используются только в одном месте.

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



Замена вложенных условных операторов граничным оператором
За мудреным названием скрывается простой возврат. Вот код, который вы получите после рефакторинга:

public void process() { if (!condition1) { .

return; } .

if (condition2) { .

loopByCondition(); return; } if (condition5) { .

return; } if (condition6) { .

} } private void loopByCondition() { for (condition3) { .

if (condition4) { .

} } }

Как видите, код стал линейнее и проще.

Этот код гораздо проще поддерживать.



выводы

Эти простые и понятные рефакторинги сделают ваш код лучше.

Не стоит о них забывать.

Стоит более систематически читать о рефакторингах от Фаулера.

А современные IDE позволяют более комфортно проводить рефакторинг в несколько кликов.

Код, указанный в последнем примере, можно написать сразу.

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

Для этого не забываем про оператор return и возможность вынести сложный блок в отдельный метод. От кода к стилю "свалка потока сознания" от него нужно избавиться сразу после создания на этапе code review. Теги: #рефакторинг #простота #повседневная жизнь #код #обслуживание #разработка сайтов #идеальный код #дизайн и рефакторинг

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.