短 IF - ELSE 语句
2022-08-31 11:47:28
我试图使我的代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的代码不起作用(“不是语句”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这是怎么回事?需要括号?哪里?
我试图使我的代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的代码不起作用(“不是语句”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这是怎么回事?需要括号?哪里?
“三元表达式”只能用于条件赋值。也就是说,您可以执行如下操作:x ? y : z
String mood = inProfit() ? "happy" : "sad";
因为三元表达式返回某些内容(在本例中为类型)。String
它并不是真的要用作简短的内联 。特别是,如果各个部分不返回值或返回不兼容类型的值,则不能使用它。(因此,虽然如果两种方法碰巧返回相同的值,则可以执行此操作,但不应仅出于副作用目的调用它)。if-else
因此,执行此操作的正确方法就是使用 if-else 块:
if (jXPanel6.isVisible()) {
jXPanel6.setVisible(true);
}
else {
jXPanel6.setVisible(false);
}
当然可以缩短为
jXPanel6.setVisible(jXPanel6.isVisible());
对我来说,后两种表达方式都更具可读性,因为它们可以更清楚地传达你想要做什么(顺便说一句,你是否以错误的方式得到了你的条件?无论如何,这看起来像是一个no-op,而不是一个切换)。
不要将低字符数与可读性混为一谈。关键点是最容易理解的;轻度滥用语言特征是混淆读者的明确方式,或者至少让他们在心理上做一个双重行为。
jXPanel6.setVisible(jXPanel6.isVisible());
或以您的形式:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);