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