if
、while
、do
或 for
语句。
一些代码样式,例如 Google Java 样式指南,要求所有控制语句都要带大括号。
在向不带大括号的控制语句添加更多语句时,重要的是不要忘记添加大括号。 在注释掉一行代码时,在不使用大括号时也必须更加小心,以免无意中使下一条语句成为控制流语句的一部分。 Always using braces makes insertion or commenting out of a line of code safer.
如果始终遵循使用大括号的代码样式,则很可能不会发生 goto fail 漏洞。 带大括号的控制语句使控制流更易于查看,而无需依赖于可能不正确的缩进。
示例:
class Strange {
void x(boolean one, boolean two) {
if(one)
if(two)
foo();
else
bar();
}
void foo() {}
void bar() {}
}
快速修复用大括号包装语句体:
class Strange {
void x(boolean one, boolean two) {
if(one) {
if(two) {
foo();
} else {
bar();
}
}
}
void foo() {}
void bar() {}
}