Extract Variable.
You have an expression that’s hard to understand.
Place the result of the expression or its parts in separate variables that are self-explanatory.
##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
The main reason for extracting variables is to make a complex expression more understandable, by dividing it into its intermediate parts. These could be:
-
Condition of the
if()operator or a part of the?:operator in C-based languages -
A long arithmetic expression without intermediate results
-
Long multipart lines
Extracting a variable may be the first step towards performing Extract Method if you see that the extracted expression is used in other places in your code.
##Benefits
- More readable code! Try to give the extracted variables good names that announce the variable’s purpose loud and clear. More readability, fewer long-winded comments. Go for names like
customerTaxValue,cityUnemploymentRate,clientSalutationString, etc.
##How to Refactor
-
Insert a new line before the relevant expression and declare a new variable there. Assign part of the complex expression to this variable.
-
Replace that part of the expression with the new variable.
-
Repeat the process for all complex parts of the expression.