Извлечение переменной.
У вас есть сложное для понимания выражение.
Поместите результат выражения или его части в отдельные переменные, поясняющие суть выражения.
##Example
void renderBanner() {
if ((platform.toUpperCase().indexOf("MAC") > -1) &&
(browser.toUpperCase().indexOf("IE") > -1) &&
wasInitialized() && resize > 0 )
{
// do something
}
}void renderBanner() {
final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1;
final boolean isIE = browser.toUpperCase().indexOf("IE") > -1;
final boolean wasResized = resize > 0;
if (isMacOs && isIE && wasInitialized() && wasResized) {
// do something
}
}##Why Refactor
Главная мотивация этого рефакторинга — сделать более понятным сложное выражение, разбив его на промежуточные части. Это может быть:
-
Условие оператора
if()или части оператора?:в C-подобных языках. -
Длинное арифметическое выражение без промежуточных результатов.
-
Длинное склеивание строк.
Выделение переменной может стать первым шагом к последующему извлечению метода, если вы увидите, что выделенное выражение используется и в других местах кода.
##Benefits
- Улучшает читабельность кода. Постарайтесь дать выделенным переменным хорошие названия, которые будут отражать точно суть выражения. Так вы сделаете код читабельным и сумеете избавиться от лишних комментариев. Например,
customerTaxValue,cityUnemploymentRate,clientSalutationStringи т. д.
##How to Refactor
-
Вставьте новую строку перед интересующим вас выражением и объявите там новую переменную. Присвойте этой переменной часть сложного выражения.
-
Замените часть вынесенного выражения новой переменной.
-
Повторите это для всех сложных частей выражения.