41 lines
3.1 KiB
Markdown
41 lines
3.1 KiB
Markdown
#рефакторинг #методы_рефакторинга
|
||
|
||
![[Pasted image 20241115074104.png]]
|
||
|
||
|
||
### **Проблема**
|
||
Название метода не раскрывает суть того, что он делает
|
||
![[Pasted image 20241115074142.png]]
|
||
```typescript
|
||
function circum(radius) {...}
|
||
```
|
||
|
||
### **Решение**
|
||
Измените название метода
|
||
![[Pasted image 20241115074219.png]]
|
||
```typescript
|
||
function circumference(radius) {. . .}
|
||
```
|
||
|
||
### **Причины рефакторинга**
|
||
|
||
Наиболее важным элементом такого соединения является имя функции. Хорошее имя позволяет понять, что делает функция, не видя кода, который ее реализует.
|
||
- Метод мог получить неудачное название с самого начала. Например, кто-то создал метод впопыхах, не придал должного значения хорошему названию.
|
||
- С другой стороны, метод мог быть назван удачно изначально, но ввиду расширения его функциональности, имя метода перестало быть актуальным.
|
||
|
||
### **Достоинства**
|
||
- - Улучшает читабельность кода. Постарайтесь дать новому методу такое название, которое бы отражало суть того, что он делает. Например, `createOrder()`, `renderCustomerInfo()` и т. д.
|
||
|
||
### **Порядок рефакторинга**
|
||
1. Проверьте, не определён ли метод в суперклассе или подклассе. Если так, нужно будет повторить все шаги и в этих классах
|
||
2. Следующий шаг важен, чтобы сохранить работоспособность программы во время рефакторинга. Итак, создайте новый метод с новыми именем. Скопируйте туда код старого метода. Удалите весь код в старом методе и вставьте вместо него вызов нового метода
|
||
3. Найдите все обращения к старому методу и замените их обращениями к новому
|
||
4. Удалите старый метод. Этот шаг неосуществим, если старый метод является частью публичного интерфейса. В этом случае, старый метод нужно пометить как устаревший (`deprecated`)
|
||
|
||
### **Борется с запахом**
|
||
- [[Альтернативные классы с разными интерфейсами]]
|
||
- [[Комментарии]]
|
||
|
||
### **Ссылки**
|
||
- https://refactoring.guru/ru/rename-method
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |