Составление методов

Значительная часть рефакторинга посвящается правильному составлению методов. В большинстве случаев, корнем всех зол являются слишком длинные методы. Хитросплетения кода внутри такого метода, прячут логику выполнения и делают метод крайне сложным для понимания, а значит и изменнения.

Рефакторинги этой группы призваны уменьшить сложностью внутри метода, убрать дублирование кода и облегчить последующую работу с ним.

Извлечение метода

Проблема: У вас есть фрагмент кода, который можно сгруппировать.

Решение: Выделите участок кода в новый метод (или функцию) и вызовите этот метод вместо старого кода.

Встраивание метода

Проблема: Стоит использовать в том случае, когда тело метода очевиднее самого метода.

Решение: Замените вызовы метода его содержимым и удалите сам метод.

Извлечение переменной

Проблема: У вас есть сложное для понимания выражение.

Решение: Поместите результат выражения или его части в отдельные переменные, поясняющие суть выражения.

Встраивание переменной

Проблема: У вас есть временная переменная, которой присваивается результат простого выражения (и больше ничего).

Решение: Замените обращения к переменной этим выражением.

Замена переменной вызовом метода

Проблема: Вы помещаете результат какого-то выражения в локальную переменную, чтобы использовать её далее в коде.

Решение: Выделите все выражение в отдельный метод и возвращайте результат из него. Замените использование вашей переменной вызовом метода. Новый метод может быть использован и в других методах.

Расщепление переменной

Проблема: У вас есть локальная переменная, которая используется для хранения разных промежуточных значений внутри метода (за исключением переменных циклов).

Решение: Используйте разные переменные для разных значений. Каждая переменная должна отвечать только за одну определённую вещь.

Удаление присваиваний параметрам

Проблема: Параметру метода присваивается какое-то значение.

Решение: Вместо параметра воспользуйтесь новой локальной переменной.

Замена метода объектом методов

Проблема: У вас есть длинный метод, в котором локальные переменные так сильно переплетены, что это делает невозможным применение «извлечения метода» (Extract method).

Решение: Преобразуйте метод в отдельный класс так, чтобы локальные переменные стали полями этого класса. После этого можно без труда разделить метод на части.

Замена алгоритма

Проблема: Вы хотите заменить существующий алгоритм другим?

Решение: Замените тело метода, реализующего старый алгоритм, новым алгоритмом.

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш новый интерактивный курс по рефакторингу. Он более информативный и гораздо более интересный, чем банальный текст.

Узнать больше...