“if”语句末尾的分号
2022-08-31 13:05:12
今天,经过半个小时的搜索,我发现可以在if语句而不是代码后面放一个分号,如下所示:
if(a == b);
// Do stuff
这基本上意味着无论是否相等,这些东西都会完成,并且该语句没有任何意义。为什么Java没有给我一个错误?是否有任何情况这样做是有用的?a
b
if
今天,经过半个小时的搜索,我发现可以在if语句而不是代码后面放一个分号,如下所示:
if(a == b);
// Do stuff
这基本上意味着无论是否相等,这些东西都会完成,并且该语句没有任何意义。为什么Java没有给我一个错误?是否有任何情况这样做是有用的?a
b
if
是否有任何情况这样做是有用的?
有用?如“使您的代码更清晰,更清晰,更快,更易于维护”?一点也不。这很可能是糟糕的、令人困惑的代码。
但它不一定是良性的。这样的语句可以执行操作和/或由于引起副作用的方法而改变状态,并且可以选择由于运算符短路而评估这些方法。
if( a() && b() );
在这里,或者可以做某事,并且只有在为真时才会执行。a()
b()
b()
a()
至于为什么,我认为答案很简单,偏离定义的,预期的行为(例如,像这样的语句)比开发人员编写糟糕代码的替代方案更糟糕。while(reader.read());
编写糟糕的代码总是可能的。重申一下,这几乎在任何情况下都是糟糕的代码。