Спрощення умовних виразів

Логіка умовного виконання має тенденцію ставати складною, тому ряд рефакторингов спрямований на те, щоб спростити її.

Розподіл умовного оператора

Проблема: У вас є складний умовний оператор (if - then/else або switch).

Рішення: Виділіть в окремі методи усі складні частини оператора: умова, then і else.

Об'єднання умовних операторів

Проблема: У вас є декілька умовних операторів, що ведуть до однакового результату або дії.

Рішення: Об'єднайте всі умови в одному умовному операторі.

Об'єднання фрагментів, що дублюються, в умовних операторах

Проблема: Однаковий фрагмент коду знаходиться в усіх гілках умовного оператора.

Рішення: Винесіть його за рамки оператора.

Видалення керуючого флагу

Проблема: У вас є булева змінна, яка грає роль керуючого флагу для декількох булевих виразів.

Рішення: Використайте break, continue і return замість цієї змінної.

Заміна вкладених умовних операторів граничним оператором

Проблема: У вас є група вкладених умовних операторів, серед яких складно виділити нормальний хід виконання коду.

Рішення: Виділіть усі перевірки спеціальних або граничних випадків виконання в окремі умови і поставте їх перед основними перевірками. В ідеалі, ви повинні отримати «плаский» список умовних операторів, що йдуть один за іншим.

Заміна умовного оператора поліморфізмом

Проблема: У вас є умовний оператор, який, залежно від типу або властивостей об'єкту, виконує різні дії.

Рішення: Створіть підкласи, яким відповідають гілки умовного оператора. У них створіть спільний метод і перемістіть в нього код з відповідної гілки умовного оператора. Згодом проведіть заміну умовного оператора на виклик цього методу. Таким чином, потрібна реалізація вибиратиметься через поліморфізм залежно від класу об'єкту.

Введення Null-об'єкту

Проблема: Через те, що деякі методи повертають null замість реальних об'єктів, у вас в коді присутня безліч перевірок на null.

Рішення: Замість null повертайте Null-об'єкт, який надає поведінку за умовчанням.

Введення перевірки твердження

Проблема: Коректна робота ділянки коду припускає наявність якихось певних умов або значень.

Рішення: Замініть ці припущення конкретними перевірками.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...