Nested code blocks can be used to create a new scope and restrict the visibility of the variables defined within. Using this feature in a method typically indicates that it takes on too many responsibilities, and should be refactored into smaller ones.
The following code:
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; } /* ... */ } }
should be refactored into:
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); }