这种简写是一种不好的做法,还是任何具有Java基础知识的程序员都知道,如果checkDoSResult
等于host
,"localhost"
下面的代码中int checkDoSResult = 0;
if (!"localhost".equals(host) && (checkDoSResult = CheckHost.checkDoS(user+"@"+host, "query"))!=0)
...
没有被重新分配?
Action.INPUT
答案 0 :(得分:2)
“任何具有Java基础知识的程序员”都知道某些事情的事实并不一定使“某事”成为一种好的做法。
条件和循环标题内的赋值很难被发现,因为程序员的眼睛期待那里的条件,而不是赋值。将赋值放在逻辑表达式的短路部分只会使事情变得更糟。
当然,任何接受过良好培训的程序员都能够“破译”你想说的话,但这需要时间。将条件拆分为两部分,并将赋值放在if
语句的正文中,将有助于其他人理解您的意图,这比保存几行代码更重要。
答案 1 :(得分:1)
你可以拥有:
int checkDoSResult = 0;
if (!"localhost".equals(host) && (checkDoSResult = CheckHost.checkDoS(user+"@"+host, "query"))!=0) {
...
}
或者这个(@Arkantos):
int checkDoSResult = 0;
if (!"localhost".equals(host)) {
checkDoSResult = CheckHost.checkDoS(user+"@"+host, "query");
if (checkDoSResult != 0) {
...
}
}
两个片段都是一样的,但哪一个更容易阅读?我会选择第二个选项。