#рефакторинг #методы_рефакторинга ![[Pasted image 20241118083219.png]] ### **Проблема** Когда группы функций, которые тесно взаимодействуют с общими данными (обычно передаваемыми в качестве аргументов в вызовы функций), то есть возможность сформировать класс ```typescript function base(aReading) {...} function taxableCharge(aReading) {...} function calculateBaseCharge(aReading) {...} ``` ### **Решение** Использование класса создает общую среду, в которой совместное использование этих функций видно более отчетливо и позволяет упростить вызовы функций внутри объекта путем удаления множества аргументов. Кроме того, класс предоставляет возможность получения ссылки для передачи такого объекта в другие части системы ```typescript class Reading { base() {...} taxableCharge() {...} calculateBaseCharge() {...} } ``` ### **Достоинства** - Одним из существенных преимуществ применения класса является то, что он позволяет клиентам изменять основные данные объекта при сохранении их согласованности ### **Порядок рефакторинга** 1. Сгруппируйте общие данные для двух функций в структуру 2. Перенесите каждую функцию, которая использует общую запись в новый класс 3. Любые аргументы вызова функции, которые являются членами класса, могут быть удалены из списка аргументов ### **Борется с запахом** - [[Длинный список параметров]] - [[Стрельба дробью]] ### **Ссылки** - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]