#рефакторинг #методы_рефакторинга ![[Pasted image 20241118084738.png]] ### **Проблема** Программное обеспечение часто включает передачу данных в программы, которые вычисляют на их основе различную производную информацию ```typescript function base(aReading) {...} function taxableCharge(aReading) {...} ``` ### **Решение** Использовать функцию преобразования данных, которая принимает исходные данные в качестве входных и вычисляет все производные значения, помещая каждое из них в качестве поля в выходные данные ```typescript function enrichReading(argReading) { const aReading = _.cloneDeep(argReading); aReading.baseCharge = base(aReading); aReading.taxableCharge = taxableCharge(aReading); return aReading; } ``` ### **Причины рефакторинга** - Избежание дублирования логики вычислений. ### **Достоинства** - Данные находятся в постоянном место, где их можно найти и обновить, чтобы избежать дублирования логики ### **Порядок рефакторинга** 1. Создайте функцию преобразования, которая принимает преобразуемую запись и возвращает те же значения, что и исходные 2. Выберите некоторую логику и переместите ее тело в функцию преобразования, чтобы создать новое поле в записи. Измените код клиента для обращения к новому полю ### **Ссылки** - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]