Введение Со временем код становится все более запутанным и сложным.
Когда-то элегантные методы превращаются в код «спагетти» из тысяч строк.
Конечно, до определенного момента проще просто добавить в метод новое условие или цикл.
Но когда количество строк в методе превышает сотню и при этом он представляет собой единый блок условий и циклы невероятной вложенности, то разобраться гораздо сложнее.
Проблема
Метод увеличивается в размерах и его обслуживание существенно усложняется.В то же время структура метода не позволяет провести прозрачный рефакторинг без нарушения логики кода.
Код
У нас есть длинный код, например:Этот код не поддерживается.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. Теги: #рефакторинг #простота #повседневная жизнь #код #обслуживание #разработка сайтов #идеальный код #дизайн и рефакторинг
-
Оставайтесь Дома, Когда Ищете Новый Дом
19 Oct, 24 -
Гюрза.трио – Пробуждение
19 Oct, 24 -
Xiaomi Mi2 Анонсирован
19 Oct, 24 -
Эффективный Нанофильтр За Три Копейки
19 Oct, 24 -
Css И Сафари
19 Oct, 24 -
Учебная Сеть/Контекст В Go
19 Oct, 24