内嵌的代码块可以用来创建一个新的范围,并限制内部的变量作用范围。 在方法中使用这个特性,表示它担负了太多责任,应该重构为更小的部分。
如下代码:
public void evaluate(int operator) {
switch (operator) {
/* ... */
case ADD: { // Non-Compliant - nested code block '{' ... '}'
int a = stack.pop();
int b = stack.pop();
int result = a + b;
stack.push(result);
break;
}
/* ... */
}
}
应该重构为:
public void evaluate(int operator) {
switch (operator) {
/* ... */
case ADD: // Compliant
evaluateAdd();
break;
/* ... */
}
}
private void evaluateAdd() {
int a = stack.pop();
int b = stack.pop();
int result = a + b;
stack.push(result);
}