从 C++ 的角度来说
三元运算子有机会改变 l-value/r-value 的性质,进而破坏最佳化
举个简单例子 https://wandbox.org/permlink/8blhqHl417Zmrh9a
可以看到用三元运算子的时候,回传区域变量竟然要 copy 而不是 move
虽然说 Java 没有这些
不过你就知道看起来很简洁的东西,也可能会有你没意识到的副作用
因为有了这个认知
我个人现在不管什么语言,都是尽量不用三元运算子,让自己习惯用安全的写法
※ 引述《a88241050 (再回头已是百残身)》之铭言:
: 小弟写java的
: 以前常常写三元判断式
: 就比如说
: String a;
: if(con) {
: a= "aaa";
: } else {
: a="bbb";
: }
: 这样就要占掉六行
: 所以我通常都是写
: String a= con ? "aaa" : "bbb";
: 从五行变成一行
: 在我看来简洁又方便
: 但最近给一个资深前辈code review的时候
: 他说不要用三元判断式
: 因为不好阅读
: 他工作那么久也从来不用三元判断式的
: 而且java有很多套件都可以用来取代三元判断式
: 所以用三元判断式真的不好吗?