Nested code blocks can be used to create a new scope and restrict the visibility of the variables defined inside it. Using this feature in a method typically indicates that the method has too many responsibilities, and should be refactored into smaller methods.
public void evaluate(int operator) {
switch (operator) {
/* ... */
case ADD: { // Noncompliant - 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);
}