短 IF - ELSE 语句

2022-08-31 11:47:28

我试图使我的代码更具可读性,所以我决定使用一些简短的IF语句。

这是我的代码不起作用(“不是语句”):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);

这是怎么回事?需要括号?哪里?


答案 1

“三元表达式”只能用于条件赋值。也就是说,您可以执行如下操作: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,而不是一个切换)。

不要将低字符数可读性混为一谈。关键点是最容易理解的;轻度滥用语言特征是混淆读者的明确方式,或者至少让他们在心理上做一个双重行为。


答案 2
jXPanel6.setVisible(jXPanel6.isVisible());

或以您的形式:

jXPanel6.setVisible(jXPanel6.isVisible()?true:false);

推荐