我过度使用三元运算符,有时甚至用它替换非常简单的if语句。例如,我发现自己更换了这样的东西:
if (foo != null) {
bar = foo;
}
用这个:
bar = (foo == null) ? bar : foo;
虽然这是一个味道更好的问题,但我想知道:
我认为性能可能更差的原因在于我假设编译器无法在foo
为null
时优化三元组。因此,bar
的值可能会再次设置为相同的值,浪费一些CPU时间,而简单的if
语句永远不会到达那一点。但是我对编译器和执行的知识是有限的,因此这个问题。
答案 0 :(得分:3)
如果你担心风格,你应该至少删除支架噪音:
bar = foo == null ? bar : foo;
至于性能,在foo
为空的情况下,您将进行不必要的分配。很重要。你在谈论纳秒。
不要担心“表现”这种微不足道的差异。担心可读性,这更重要。
在这种情况下,我发现if
版本更具可读性:
if (foo != null) {
bar = foo;
}
很清楚代码的意图是什么。