Упрощение вызовов методов
Эти рефакторинги делают вызовы методов проще и яснее для понимания. Это, в свою очередь, упрощает интерфейсы взаимодействия между классами.
Проблема: Название метода не раскрывает суть того, что он делает.
Решение: Измените название метода.
Проблема: Методу не хватает данных для осуществления каких-то действий.
Решение: Создайте новый параметр, чтобы передать эти данные.
Проблема: Параметр не используется в теле метода.
Решение: Удалите неиспользуемый параметр.
Проблема: У вас есть метод, который возвращает какое-то значение, но при этом в процессе работы он изменяет что-то внутри объекта.
Решение: Разделите метод на два разных метода. Один из них пускай возвращает значение, а второй модифицирует объект.
Проблема: Несколько методов выполняют похожие действия, которые отличаются только какими-то внутренними значениями, числами или операциями.
Решение: Объедините все эти методы в один с параметром, в который будет передаваться отличающееся значение.
Проблема: Метод разбит на части, каждая из которых выполняется в зависимости от значения какого-то параметра.
Решение: Извлеките отдельные части метода в собственные методы и вызывайте их вместо оригинального метода.
Проблема: Вы получаете несколько значений из объекта, а затем передаёте их в метод как параметры.
Решение: Вместо этого передавайте весь объект.
Проблема: Вызываем метод и передаем его результаты как параметры другого метода. При этом значение параметров могли бы быть получены и внутри вызываемого метода.
Решение: Вместо передачи значения через параметры метода, попробуйте переместить код получения значения внутрь самого метода.
Проблема: В ваших методах встречается повторяющаяся группа параметров.
Решение: Замените эти параметры объектом.
Проблема: Значение поля должно быть установлено только в момент создания и больше никогда не меняться.
Решение: Удалите методы, устанавливающие значение этого поля.
Проблема: Метод не используется другими классами либо используется только внутри своей иерархии классов.
Решение: Сделайте метод приватным или защищённым.
Проблема: У вас есть сложный конструктор, делающий нечто большее, чем простая установка значений полей объекта.
Решение: Создайте фабричный метод и замените им вызовы конструктора.
Проблема: Метод возвращает определенное значение, которое будет сигнализировать об ошибке.
Решение: Вместо этого следует выбрасывать исключение.
Проблема: Вы выбрасываете исключение там, где можно было бы обойтись простой проверкой условия.
Решение: Замените выбрасывание исключения проверкой этого условия.