Tom*_*sky 8 java ternary-operator
Checkstyle抱怨以下内容:
return (null == a ? a : new A());
Run Code Online (Sandbox Code Playgroud)
并且说这些是不必要的.
虽然声明在没有它们的情况下确实可以正常工作,但它们在现在看起来更具可读性 - 否则当我读它时我倾向于看到:
return null
Run Code Online (Sandbox Code Playgroud)
首先,然后必须暂停考虑剩下的
== a ? a : new A();
Run Code Online (Sandbox Code Playgroud)
部分,因为我的大脑已经走了一条路.
此外,每当我看到三元运算符时,我倾向于做同样的事情,除非它被分组为parens.
所以:围绕三元的parens应该是事实上的标准吗?有没有理由不把它们放在那里?
好吧,checkstyle是对的,括号对执行没用.但是执行无用对于良好的代码读取并不意味着无用.如果阅读更有意义,你应该留下它们.
我认为这段代码不需要更多括号:
int number = (myBoolean)? 1 : 2;
Run Code Online (Sandbox Code Playgroud)
但在你的情况下,return关键字和你的布尔值是表达式的事实可以改变你阅读语句的方式.
在阅读return语句时,我知道'return'和';'之间的所有内容 是什么将被返回,所以我无法读取您的代码示例作为返回null后跟一些符号,因为您声称你读它.
也许阅读解析技术可能会帮助你像我一样看到它.也就是说,我还没有真正阅读过解析技术,尽管多年来我一起拼凑了几个解析器.
我总是删除不必要的括号.它们无助于代码理解,因为我非常了解Java的运算符优先级.奇怪的是,我不确定,我加上括号,等待IDEA告诉我他们是多余的.然后我删除它们,并尝试提交内存我刚刚发现的优先规则.
在我继承的代码库中,我倾向于在代码区域中找到最多的冗余括号,这些代码区域由于其他原因而很差,因此我将这两者联系起来.
| 归档时间: |
|
| 查看次数: |
4495 次 |
| 最近记录: |