2016-06-13 35 views
2

它是一个很好的做法,使用三元运算此:三元运算符的使用,以增加可变

answersCounter = answer.length != 0 ? ++answersCounter : answersCounter;

这是一个问题,我总是问自己,因为它会频繁出现。还是使用正常的if语句更好?对我来说,这看起来更清洁一行。

+2

'answersCounter + = answer.length!= 0;'是你需要的所有 – Pointy

+0

,看起来不错!但它是如何工作的,因为评估的结果是一个布尔值,而变量是一个数字。这不能在Java中正常工作? – FraK

+2

不是。你应该只使用简单明了的if语句,而不是试图幻想。 –

回答

3

这只是意见,但我认为像你这样写增量有点差风格。

将一个变量赋值给预先增加后的版本本身有点令人困惑。对我而言,最好的代码是最清楚的(除了在必要时点头优化),有时简洁会导致清晰,有时它不会(看到任何用Perl写的东西......我小时候)。

你有过的编程技巧问题:

int i = 5; 
i += i++ + i; 

或类似的东西?而且你自己想想谁会需要知道这是如何实现的,因为你什么时候将变量分配给前/后增量版本本身?我的意思是,你永远不会看到真实的代码,对吧?

那么,你刚才提供了一个例子。虽然它是可以解析的,但它不是一个惯用的东西,也不比一个简单的明确的if更清晰。

E.g.

if (answer.length != 0) answersCounter++; 

当然,有些人不喜欢if语句用了括号,并且没有换行不喜欢大括号,这可能是你如何结束了与三元。有些编码风格需要重新评估,但是如果它导致(主观)更糟糕的代码以避免一些回车。

再次,这只是意见,当然不是一个规则。

+0

这是一个非常好的棘手问题,谢谢!而且我认为如果if语句更具体一些,那就去这里:) – FraK