mon*_*zek 79 java if-statement
我试图让我的代码更具可读性,所以我决定使用一些简短的IF语句.
这是我的代码不起作用("不是声明"):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
Run Code Online (Sandbox Code Playgroud)
这有什么问题?需要括号?哪里?
And*_*yle 207
"三元表达式" x ? y : z
只能用于条件赋值.也就是说,你可以这样做:
String mood = inProfit() ? "happy" : "sad";
Run Code Online (Sandbox Code Playgroud)
因为三元表达式返回了一些东西(String
在这个例子中是类型).
它并不是真正意味着用作短线的if-else
.特别是,如果各个部分未返回值,或返回不兼容类型的值,则无法使用它.(因此,如果两种方法都返回相同的值,则可以执行此操作,但不应仅为了副作用而调用它).
所以正确的方法是使用if-else块:
if (jXPanel6.isVisible()) {
jXPanel6.setVisible(true);
}
else {
jXPanel6.setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
这当然可以缩短为
jXPanel6.setVisible(jXPanel6.isVisible());
Run Code Online (Sandbox Code Playgroud)
对我来说,后两种表达方式都更具可读性,因为它们更清楚地传达了您正在尝试做的事情.(顺便说一句,你是否以错误的方式得到了你的条件?看起来这无论如何都是无操作的,而不是切换).
不要将低字符数与可读性混淆.关键点是最容易理解的; 而轻度滥用语言特征是一种迷惑读者的明确方式,或者至少让他们做一次精神上的双重考虑.
mau*_*tto 27
jXPanel6.setVisible(jXPanel6.isVisible());
Run Code Online (Sandbox Code Playgroud)
或以您的形式:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
Run Code Online (Sandbox Code Playgroud)