32 lines
2.3 KiB
Markdown
32 lines
2.3 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
![[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]] |