2026-02-23 19:52:05 +03:00

39 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#рефакторинг #запахи_кода
![[Pasted image 20241112222453.png]]
> Программы, использующие короткие функции, живут долго и счастливо. Работая с такой программой на протяжении нескольких лет, вы понимаете, какую ценность представляют собой маленькие функции. Все выгоды, которые дает косвенность — понятность, совместное использование и выбор, — поддер­живаются именно маленькими функциями.
> Еще на заре программирования было ясно, что чем длиннее функция, тем труднее понять, как она работает
> Эвристическое правило, которому мы следуем, гласит, что если возни­кает необходимость что-то прокомментировать, то пора писать функцию. В этой функции содержится код, который требовал комментариев, но ее название от­ражает его назначение, а не способ решения им задачи
### **Признаки**
- Метод содержит слишком большое число строк кода. Длина метода более десяти строк должна начинать вас беспокоить
### **Причины появления**
- В метод всё время что-то добавляется, но ничего не выносится. Так как писать код намного проще, чем читать
- Человеку зачастую ментально сложнее создать новый метод, чем дописать что-то в уже существующий: «Как же, мне нужно добавить всего две строки, не буду же я создавать для этого целый метод»
![[Pasted image 20241112222556.png]]
Если ощущается необходимость что-то прокомментировать внутри метода, этот код лучше выделить в новый метод. Даже одну строку имеет смысл выделить в метод, если она нуждается в разъяснениях. К тому же, если у метода хорошее название, то не нужно будет смотреть в его код, чтобы понять, что он делает.
### **Рефакторинги**
- [[Извлечение функции (Extract Function)]]
- [[Замена временной переменной запросом (Replace Temp with Query)]]
- [[Замена функции командой (Replace Function with Command)]]
### **Результат**
- Из всех видов объектного кода дольше всего выживают классы с короткими методами. Чем длиннее ваш метод или функция, тем труднее будет её понять и поддерживать.
- В длинных методах зачастую можно обнаружить «залежи» дублирования кода.
![[Pasted image 20241112222648.png]]
### **Производительность**
Многие волнуются, что увеличение числа методов может плохо сказаться на производительности. В абсолютном большинстве случаев, это не является реальной проблемой, так что **просто перестаньте об этом думать.**
Имея чистый и понятный код, вы с большей вероятностью натолкнётесь на отличный способ реструктуризировать код программы и увеличить реальную производительность, если такая надобность вообще будет.
### **Ссылки**
- [https://refactoring.guru/ru/smells/long-method](https://refactoring.guru/ru/smells/long-method)
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]