Також відомий як Long Parameter List

Запах коду Довгий список параметрів

Симптоми і ознаки

Кількість параметрів методу більше трьох-чотирьох.

Причини появи

Довгий список параметрів може з'явитися після об'єднання декількох варіантів алгоритмів в одному методі. В цьому випадку може бути створений довгий список параметрів, контролюючих те, яка з варіацій буде виконана і як.

Поява довгого списку параметрів також може бути пов'язана із спробою програміста зменшити зв'язаність між класами. Наприклад, код створення конкретних об'єктів, потрібних в методі, перенесли з самого методу в код виклику цього методу, а створені об'єкти вирішили передавати в метод як параметри. Таким чином, оригінальний клас перестав знати про зв'язки між об'єктами, і зв'язність зменшилася.

Але якщо з’являється потреба в декількох таких об'єктах, для кожного з них знадобиться свій параметр, що призводить до розростання списку параметрів.

У довгих списках параметрів важко орієнтуватися, вони стають суперечливими і складними у використанні. Замість довгого списку параметрів метод може використовувати дані свого власного об'єкту. Якщо всіх необхідних даних в поточному об'єкті немає, в якості параметра методу можна передати інший об'єкт, який отримає відсутні дані.

Лікування

  • Якщо дані, які передаються в метод, можна отримати шляхом виклику методу іншого об'єкту, застосовуємо заміну параметра викликом методу. Цей об'єкт може бути розташованим у полі власного класу або переданий як параметр методу.
  • Замість того щоб передавати групу даних, отриманих з іншого об'єкту в якості параметрів, можна передати в метод сам об'єкт, використовуючи передачу всього об'єкту.

  • Якщо є декілька незв'язаних елементів даних, іноді їх можна об'єднати в один об'єкт-параметр, застосувавши для цього заміну параметрів об'єктом.

Виграш

  • Підвищує читабельність коду, зменшує його розмір.
  • В процесі рефакторингу ви зможете виявити дублювання коду, яке раніше було непомітним.

Не варто чіпати, якщо...

  • Не варто позбавлятися від параметрів, якщо при цьому з'являється небажана зв'язаність між класами.

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

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

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

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