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

36 lines
2.7 KiB
Markdown
Raw Permalink 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 20241112221124.png]]
> Увидев одинаковые структуры кода в нескольких местах, можно быть уверен­ным, что если их удастся объединить, то программа от этого только выиграет. Дублирование означает, что каждый раз, когда вы читаете такие копии, вам необ­ходимо внимательно проверять — нет ли между ними какой-либо разницы. Если вам нужно изменить дублированный код, вы должны найти и исправить каждую копию.
### **Признаки**
- Два фрагмента кода выглядят почти одинаковыми.
### **Причины появления**
- В проекте работает несколько человек, и не знают, что коллега уже написал похожий код, который можно использовать вместо написания своего
- Косвенное дублирование - когда конкретные участки кода отличаются внешне, хотя и выполняют одну и ту же задачу. Такое дублирование бывает довольно сложно обнаружить и исправить
- Намеренно, в спешке, когда поджимают сроки
- Программист просто слишком ленив, чтобы избавить код от дублирования
![[Pasted image 20241112221307.png]]
### **Рефакторинги**
- [[Извлечение функции (Extract Function)]]
- [[Перемещение инструкций (Slide Statements)]]
- [[Подъем метода (Pull Up Method)]]
### **Результат**
- Объединение дублирующего кода позволяет улучшить структуру кода и уменьшить его объём
- Упрощение и удешевление поддержки кода в будущем
![[Pasted image 20241112221342.png]]
### **Не стоит трогать, если...**
- В очень редких случаях объединение двух одинаковых участков кода может сделать код менее очевидным и понятным.
### **Ссылки**
- [https://refactoring.guru/ru/smells/duplicate-code](https://refactoring.guru/ru/smells/duplicate-code)
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]