最近偶尔又翻到bobo老师的慕课专栏里的第一篇文章
看到里面讲到三目运算符,又想起bobo老师在慕课网swift课(课程好像下线了)里也提到过。
大致意思是说swift和python中的三目运算符在逻辑表意上(以下简称语义化)更好。
但是我感觉swift和python中的三目运算符形式,理解的时候还要拐一下弯。
return true if(条件成立)else false
而java和js中的三目运算符,当你熟练掌握之后,不仅从形式上更美观,而且也很容易理解。
return if(条件成立)ture else false
(当我写下这两个return语句的时候,我发现的确上面那个更好理解,但是我发现这主要是前面return的问题,如果没有return的话,下面那个就是一个最简单的if else语句,而上面那个很好的和return结合了,语义化更好)
下文中
把python和swift中的形式叫新的三目运算符(可能它不叫三目运算符)
把java和js中的形式叫旧的三目运算符或原先的三目运算符
当然对于新人或者不会编程语言的人来说,python和swift中的应该更容易看明白。
我还记得还是编程小白的时候,也是用了很长时间才能一遇到三目运算符就像加减乘除一样瞬间理解,也就是说原先的三目运算符需要一个学习成本,而新的三目运算符学习成本比较低,就像是自然语言一样。
从代码的优雅上来说,我还是更喜欢原先的三目运算符
另外三目运算符的一个主要功能就是简化代码,新的只是把两个符号换成了两个英文字母,在没有过多增加复杂度的情况下达到了语义化的目的
再者,这种return放前面,if放后面的倒装结构本来就更符合英语的语法结构
如果想要更语义化一些,肯定就变成了下面这种
if(条件成立) return true else return false
而这又回到了if else语句,缺失了简洁性。(可能未来的编程语言不需要简洁性,直接自然语言。比如:
未来的你让你的机器人助理给你买张机票,你会说:如果有靠窗的给我买靠窗的,没有的话,就随便买吧。)
所以新的三目运算符可能是在简洁性和语义化之间做了一个最好的取舍。