Base/Knowledges/IT/Рефакторинг/Запахи кода/Длинный список параметров.md
2026-02-23 19:52:05 +03:00

32 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#рефакторинг #запахи_кода
![[Pasted image 20241112223051.png]]
> В длинных списках параметров трудно разобраться. Они зачастую противоречивы и сложны в применении, а кроме того, их приходится вечно изменять по мере возникновения необходимости в новых данных.
### **Признаки**
- Количество параметров метода больше трёх-четырёх
### **Причины появления**
- После объединения нескольких вариантов алгоритмов в одном методе. В этом случае может быть создан длинный список параметров, контролирующих то, какая из вариаций будет выполнена и как
- Попытка уменьшить связанность между классами
![[Pasted image 20241112223143.png]]
### **Рефакторинги**
- [[Замена параметра запросом (Replace Parameter with Query)]]
- [[Сохранение всего объекта (Preserve Whole Object)]]
- [[Введение объекта параметра (Introduce Parameter Object)]]
- [[Удаление аргумента-флага (Remove Flag Argument)]]
- [[Объединение функций в класс (Combine Functions into Class)]]
### **Результат**
- Повышает читабельность кода, уменьшает его размер
- В процессе рефакторинга может обнаружится дублирование кода, которое ранее было незаметно.
### **Не стоит трогать, если...**
- Не стоит избавляться от параметров, если при этом появляется нежелательная связанность между классами.
### **Ссылки**
- [https://refactoring.guru/ru/smells/long-parameter-list](https://refactoring.guru/ru/smells/long-parameter-list)
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]