Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Введение объекта параметра (Introduce Parameter Object).md
2026-02-23 19:52:05 +03:00

3.5 KiB
Raw Permalink Blame History

#рефакторинг #методы_рефакторинга

!Pasted image 20241118073905.png

Проблема

В методах встречается повторяющаяся группа параметров. !Pasted image 20241118074053.png

Решение

Замените эти параметры объектом !Pasted image 20241118074106.png

Причины рефакторинга

Одинаковые группы параметров зачастую встречаются не в единственном методе. Это приводит к дублированию кода, как самих параметров, так и частых операций над ними. Как только вы сведёте параметры в одном классе, вы сможете переместить туда и методы обработки этих данных, очистив от этого кода другие методы

Достоинства

  • Улучшает читабельность кода. Вместо пачки разнообразных параметров вы видите один объект с понятным названием.
  • Одинаковые группы параметров тут и там создают особый род дублирования кода, при котором вроде бы не происходит вызова идентичного кода, но все время встречаются одинаковые группы параметров и аргументов.

Недостатки

  • Если вы переместили в новый класс только данные и не планируете перемещать в него никакие поведения и операции над этими данными, это может попахивать Классы данных

Порядок рефакторинга

  1. Создайте новый класс, который будет представлять вашу группу параметров. Сделайте так, чтобы данные объектов этого класса нельзя было изменить после создания
  2. В методе, к которому применяем рефакторинг, добавьте новый параметр, в котором будет передаваться ваш объект-параметр. Во всех вызовах метода передавайте в этот параметр объект, создаваемый из старых параметров метода
  3. Теперь начинайте по одному удалять старые параметры из метода, заменяя их в коде полями объекта-параметра. Тестируйте программу после каждой замены параметра
  4. По окончанию оцените, есть ли возможность и смысл перенести какую-то часть метода (а иногда и весь метод) в класс объекта-параметра

Борется с запахом

Ссылки