Re: [討論] 寫三元判斷式code review被打槍
從 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有很多套件都可以用來取代三元判斷式
: 所以用三元判斷式真的不好嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.69.15 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1671040535.A.A1A.html
推
12/15 02:36,
1年前
, 1F
12/15 02:36, 1F
→
12/15 02:36,
1年前
, 2F
12/15 02:36, 2F
→
12/15 02:38,
1年前
, 3F
12/15 02:38, 3F
→
12/15 02:39,
1年前
, 4F
12/15 02:39, 4F
推
12/15 05:27,
1年前
, 5F
12/15 05:27, 5F
→
12/15 05:28,
1年前
, 6F
12/15 05:28, 6F
推
12/15 08:57,
1年前
, 7F
12/15 08:57, 7F
推
12/15 09:24,
1年前
, 8F
12/15 09:24, 8F
→
12/15 09:41,
1年前
, 9F
12/15 09:41, 9F
→
12/15 09:41,
1年前
, 10F
12/15 09:41, 10F
→
12/15 09:42,
1年前
, 11F
12/15 09:42, 11F
推
12/15 09:43,
1年前
, 12F
12/15 09:43, 12F
→
12/15 09:44,
1年前
, 13F
12/15 09:44, 13F
→
12/15 09:45,
1年前
, 14F
12/15 09:45, 14F
推
12/15 09:54,
1年前
, 15F
12/15 09:54, 15F
試想你要寫一個 split string 的函數,應該直覺會宣告成這樣吧
std::vector<std::string> Split(const std::string& str);
那這個回傳的 vector 是不是必然是函數內的區域變數
→
12/15 09:57,
1年前
, 16F
12/15 09:57, 16F
推
12/15 09:59,
1年前
, 17F
12/15 09:59, 17F
推
12/15 10:29,
1年前
, 18F
12/15 10:29, 18F
推
12/15 12:09,
1年前
, 19F
12/15 12:09, 19F
→
12/15 12:43,
1年前
, 20F
12/15 12:43, 20F
→
12/15 12:48,
1年前
, 21F
12/15 12:48, 21F
→
12/15 12:49,
1年前
, 22F
12/15 12:49, 22F
→
12/15 12:49,
1年前
, 23F
12/15 12:49, 23F
→
12/15 12:50,
1年前
, 24F
12/15 12:50, 24F
→
12/15 12:50,
1年前
, 25F
12/15 12:50, 25F
為了活用語言特性當然會有不同的 style
但是以本串的 conditional operator vs if-else 來說:
1. 並非語言特有
2. 不影響效能
3. 不影響可讀性
純粹只是自己看得爽不爽的問題
推
12/15 13:37,
1年前
, 26F
12/15 13:37, 26F
推
12/15 17:08,
1年前
, 27F
12/15 17:08, 27F
→
12/15 18:25,
1年前
, 28F
12/15 18:25, 28F
→
12/15 18:27,
1年前
, 29F
12/15 18:27, 29F
→
12/15 18:28,
1年前
, 30F
12/15 18:28, 30F
→
12/15 18:31,
1年前
, 31F
12/15 18:31, 31F
→
12/15 18:31,
1年前
, 32F
12/15 18:31, 32F
覺得不好寫其實就是不習慣
曾經我也跟原 po 一樣,覺得一行能寫完的東西變成那麼多行,馬德爆幹醜
所以我說不分語言都會傾向使用 if-else 是為了讓自己習慣
寫多了就不覺得醜,才不會那麼排斥
也可以說是洗腦自己 XD
推
12/15 20:10,
1年前
, 33F
12/15 20:10, 33F
→
12/15 20:10,
1年前
, 34F
12/15 20:10, 34F
→
12/15 20:10,
1年前
, 35F
12/15 20:10, 35F
→
12/15 20:10,
1年前
, 36F
12/15 20:10, 36F
噓
12/15 22:55,
1年前
, 37F
12/15 22:55, 37F
噓
12/15 23:16,
1年前
, 38F
12/15 23:16, 38F
推
12/15 23:49,
1年前
, 39F
12/15 23:49, 39F
→
12/15 23:49,
1年前
, 40F
12/15 23:49, 40F
→
12/15 23:49,
1年前
, 41F
12/15 23:49, 41F
→
12/15 23:49,
1年前
, 42F
12/15 23:49, 42F
感謝補充 (^人^
※ 編輯: holydc (61.228.73.53 臺灣), 12/16/2022 00:49:38
推
12/16 15:34,
1年前
, 43F
12/16 15:34, 43F
→
12/16 15:34,
1年前
, 44F
12/16 15:34, 44F
→
12/16 15:34,
1年前
, 45F
12/16 15:34, 45F
→
12/16 19:24,
1年前
, 46F
12/16 19:24, 46F
→
12/16 19:25,
1年前
, 47F
12/16 19:25, 47F
→
12/16 19:26,
1年前
, 48F
12/16 19:26, 48F
→
12/16 19:27,
1年前
, 49F
12/16 19:27, 49F
噓
12/17 13:06,
1年前
, 50F
12/17 13:06, 50F
→
12/17 13:06,
1年前
, 51F
12/17 13:06, 51F
→
12/17 13:12,
1年前
, 52F
12/17 13:12, 52F
→
12/17 13:12,
1年前
, 53F
12/17 13:12, 53F
推
12/17 22:34,
1年前
, 54F
12/17 22:34, 54F
討論串 (同標題文章)
Soft_Job 近期熱門文章
48
188
15
92
PTT職涯區 即時熱門文章
16
56