Довгий метод
Симптоми і ознаки
Метод містить занадто багато коду. Довжина методу більше десяти рядків повинна починати вас турбувати.
Причини появи
В метод весь час щось додається, але нічого не виноситься. Оскільки писати код набагато простіше, ніж читати, цей запах довго залишається непоміченим — аж поки метод не перетвориться на справжнього монстра.
Варто пам’ятати, що людині ментально складніше створити новий метод, ніж дописати щось у вже існуючий: «Мені потрібно додати всього два рядки, не буду ж я створювати заради цього цілий метод».
Таким чином додається один рядок за іншим, внаслідок чого метод перетворюється на велику тарілку спагеті.
Лікування
Слід дотримуватися такого правила: якщо відчувається необхідність щось прокоментувати всередині методу, цей код краще виділити в новий метод. Навіть один рядок має сенс виділяти в метод, якщо він потребує роз’яснень. До того ж, якщо метод має гарну назву, то не потрібно буде дивитися в код заради розуміння, що ж він робить.
-
Для скорочення тіла методу досить застосувати відокремлення методу.
-
Якщо локальні змінні і параметри перешкоджають виділенню методу, можна застосувати заміну тимчасової змінної викликом методу, заміну параметрів об’єктом і передачу всього об’єкта.
-
Якщо і вони не допомогли, можна спробувати виділити весь метод в окремий об’єкт за допомогою заміни методу об’єктом методів.
-
Умовні оператори і цикли свідчать про можливість виділення коду в окремий метод. Для роботи з умовними виразами підійде декомпозиція умовних операторів. Для роботи з циклом — відокремлення методу.
Виграш
-
З усіх видів об’єктного коду найкраще виживають класи з короткими методами. Чим довше ваш метод або функція, тим важче буде її зрозуміти і підтримувати.
-
Крім того, в довгих методах найчастіше зустрічаються «поклади» дублювання коду.
Швидкодія
Багато хто хвилюється, що збільшення числа методів може погано позначитися на швидкодії програми. В абсолютній більшості випадків це не є реальною проблемою, а тому — досить про це хвилюватися!
Маючи чистий і зрозумілий код, ви з більшою вірогідністю побачите класний варіант реструктуризації коду програми і збільшення реальної продуктивності.