Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git на GitByBit.com! Привіт! Хочеш класно освіжити Git? Глянь мій новий курс на GitByBit.com!

Довгий список параметрів

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

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

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

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

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

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

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

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

Лікування

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

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

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

Виграш

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

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

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

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