Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Объединение функций в класс (Combine Functions into Class).md
2026-02-23 19:52:05 +03:00

2.3 KiB
Raw Blame History

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

!Pasted image 20241118083219.png

Проблема

Когда группы функций, которые тесно взаимодействуют с общими данными (обычно передаваемыми в качестве аргументов в вызовы функций), то есть возможность сформировать класс

function base(aReading) {...}
function taxableCharge(aReading) {...}
function calculateBaseCharge(aReading) {...}

Решение

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

class Reading {
  base() {...}
  taxableCharge() {...}
  calculateBaseCharge() {...}
}

Достоинства

  • Одним из существенных преимуществ применения класса является то, что он позволяет клиентам изменять основные данные объекта при сохранении их согласованности

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

  1. Сгруппируйте общие данные для двух функций в структуру
  2. Перенесите каждую функцию, которая использует общую запись в новый класс
  3. Любые аргументы вызова функции, которые являются членами класса, могут быть удалены из списка аргументов

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

Ссылки