4.4 KiB
#рефакторинг #запахи_кода
Программы, использующие короткие функции, живут долго и счастливо. Работая с такой программой на протяжении нескольких лет, вы понимаете, какую ценность представляют собой маленькие функции. Все выгоды, которые дает косвенность — понятность, совместное использование и выбор, — поддерживаются именно маленькими функциями.
Еще на заре программирования было ясно, что чем длиннее функция, тем труднее понять, как она работает
Эвристическое правило, которому мы следуем, гласит, что если возникает необходимость что-то прокомментировать, то пора писать функцию. В этой функции содержится код, который требовал комментариев, но ее название отражает его назначение, а не способ решения им задачи
Признаки
- Метод содержит слишком большое число строк кода. Длина метода более десяти строк должна начинать вас беспокоить
Причины появления
- В метод всё время что-то добавляется, но ничего не выносится. Так как писать код намного проще, чем читать
- Человеку зачастую ментально сложнее создать новый метод, чем дописать что-то в уже существующий: «Как же, мне нужно добавить всего две строки, не буду же я создавать для этого целый метод»
Если ощущается необходимость что-то прокомментировать внутри метода, этот код лучше выделить в новый метод. Даже одну строку имеет смысл выделить в метод, если она нуждается в разъяснениях. К тому же, если у метода хорошее название, то не нужно будет смотреть в его код, чтобы понять, что он делает.
Рефакторинги
- Извлечение функции (Extract Function)
- Замена временной переменной запросом (Replace Temp with Query)
- Замена функции командой (Replace Function with Command)
Результат
- Из всех видов объектного кода дольше всего выживают классы с короткими методами. Чем длиннее ваш метод или функция, тем труднее будет её понять и поддерживать.
- В длинных методах зачастую можно обнаружить «залежи» дублирования кода.
Производительность
Многие волнуются, что увеличение числа методов может плохо сказаться на производительности. В абсолютном большинстве случаев, это не является реальной проблемой, так что просто перестаньте об этом думать.
Имея чистый и понятный код, вы с большей вероятностью натолкнётесь на отличный способ реструктуризировать код программы и увеличить реальную производительность, если такая надобность вообще будет.


