Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Объединение условного выражения (Consolidate Conditional Expression).md
2026-02-23 19:52:05 +03:00

56 lines
3.5 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 20250207084707.png]]
### **Проблема**
У вас есть несколько условных операторов, ведущих к одинаковому результату или действию.
```typescript
disabilityAmount(): number {
if (seniority < 2) {
return 0;
}
if (monthsDisabled > 12) {
return 0;
}
if (isPartTime) {
return 0;
}
// Compute the disability amount.
// ...
}
```
### **Решение**
Объедините все условия в одном условном операторе.
```typescript
disabilityAmount(): number {
if (isNotEligibleForDisability()) {
return 0;
}
// Compute the disability amount.
// ...
}
```
### **Причины рефакторинга**
Код содержит множество чередующихся операторов, которые выполняют одинаковые действия. Причина разделения операторов неочевидна.
Главная цель объединения операторов — извлечь условие оператора в отдельный метод, упростив его понимание.
### **Достоинства**
- Убирает дублирование управляющего кода. Объединение множества условных операторов, ведущих к одной цели, помогает показать, что на самом деле вы делаете только одну сложную проверку, ведущую к одному общему действию.
- Объединив все операторы в одном, вы позволяете выделить это сложное условие в новый метод с названием, отражающим суть этого выражения.
### **Порядок рефакторинга**
Перед тем как осуществлять рефакторинг, убедитесь, что в условиях операторов нет «побочных эффектов», или, другими словами, они не модифицируют что-то, а только возвращают значения. Побочные эффекты могут быть и в коде, который выполняется внутри самого оператора. Например, по результатам условия, что-то добавляется к переменной.
1. Объедините множество условий в одном с помощью операторов и и или. Объединение операторов обычно следует такому правилу:
1. Вложенные условия соединяются с помощью оператора и.
2. Условия, следующие друг за другом, соединяются с помощью оператора или.
2. [[Извлечение функции (Extract Function)|Извлеките метод]] из условия оператора и назовите его так, чтобы он отражал суть проверяемого выражения.
### **Борется с запахом**
- [[Дублируемый код]]
### **Ссылки**
- https://refactoring.guru/ru/consolidate-conditional-expression
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]