[討論] 寫三元判斷式code review被打槍

看板Soft_Job作者 (再回頭已是百殘身)時間1年前 (2022/12/14 00:43), 編輯推噓107(1125124)
留言241則, 138人參與, 1年前最新討論串1/15 (看更多)
小弟寫java的 以前常常寫三元判斷式 就比如說 String a; if(con) { a= "aaa"; } else { a="bbb"; } 這樣就要佔掉六行 所以我通常都是寫 String a= con ? "aaa" : "bbb"; 從五行變成一行 在我看來簡潔又方便 但最近給一個資深前輩code review的時候 他說不要用三元判斷式 因為不好閱讀 他工作那麼久也從來不用三元判斷式的 而且java有很多套件都可以用來取代三元判斷式 所以用三元判斷式真的不好嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.188.168 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1670949794.A.611.html

12/14 00:48, 1年前 , 1F
大部分情況都會變更難閱讀
12/14 00:48, 1F

12/14 00:49, 1年前 , 2F
不會耶我覺得還好,不要有巢狀連續判斷的話我能接受
12/14 00:49, 2F

12/14 00:49, 1年前 , 3F
12/14 00:49, 3F

12/14 00:50, 1年前 , 4F
如果短的話算很好讀吧
12/14 00:50, 4F

12/14 00:53, 1年前 , 5F
看情況,如果確定只會是簡單狀態變換就沒差,但如果以後會變成a
12/14 00:53, 5F

12/14 00:53, 1年前 , 6F
re a2 a3,b1 b2那我甘願一開始就用括號寫
12/14 00:53, 6F

12/14 00:55, 1年前 , 7F
缺點多多
12/14 00:55, 7F

12/14 00:57, 1年前 , 8F
邏輯簡單或是很短的方法裡面用短的三元OK
12/14 00:57, 8F

12/14 00:57, 1年前 , 9F
其他地方就有人會看漏
12/14 00:57, 9F

12/14 00:59, 1年前 , 10F
有些團隊是避免爭論所以完全禁用,所以不要用最省事
12/14 00:59, 10F

12/14 01:00, 1年前 , 11F
consistency 最重要 如果原本 codebase 就沒有用它就
12/14 01:00, 11F

12/14 01:00, 1年前 , 12F
不要用
12/14 01:00, 12F

12/14 01:00, 1年前 , 13F
code style有規定就別用,大家一致
12/14 01:00, 13F

12/14 01:14, 1年前 , 14F
不一樣的東西吧 三元運算有回傳值
12/14 01:14, 14F

12/14 01:33, 1年前 , 15F
判斷單一ok 不要判斷>2個就好
12/14 01:33, 15F

12/14 01:36, 1年前 , 16F
就怕嵌套多層,跟鬼一樣,看那一堆冒號直接中風
12/14 01:36, 16F

12/14 01:44, 1年前 , 17F
佔掉六行真的沒那麼誇張… 不然 IDE 也可以處理
12/14 01:44, 17F

12/14 01:56, 1年前 , 18F
如果有參與開發的任何一個人不懂,那就不要
12/14 01:56, 18F

12/14 02:23, 1年前 , 19F
這種比較簡單的 真的沒甚麼好避免的
12/14 02:23, 19F

12/14 02:28, 1年前 , 20F
要:多:潮:有?多?巢? ;問回傳值為多少
12/14 02:28, 20F

12/14 02:36, 1年前 , 21F
要看實際例子才準
12/14 02:36, 21F

12/14 03:02, 1年前 , 22F
目的是利於閱讀吧 行數根本不是重點
12/14 03:02, 22F

12/14 06:02, 1年前 , 23F
如果只有二元判斷那還好 如果是多重判斷 寧願你寫if el
12/14 06:02, 23F

12/14 06:02, 1年前 , 24F
se 甚至seitct更為好讀
12/14 06:02, 24F

12/14 06:02, 1年前 , 25F
switch
12/14 06:02, 25F

12/14 06:49, 1年前 , 26F
程度不好還學人review 啥小,可憐喔
12/14 06:49, 26F

12/14 06:50, 1年前 , 27F
他的問題
12/14 06:50, 27F

12/14 07:01, 1年前 , 28F
if else 加 log 方便,擴展邏輯也方便
12/14 07:01, 28F

12/14 07:01, 1年前 , 29F
ternary 除了少打幾個字以外有啥優點?
12/14 07:01, 29F

12/14 07:01, 1年前 , 30F
你可以用 String a; a = "bbb"; if(con) a = "aaa";
12/14 07:01, 30F

12/14 07:02, 1年前 , 31F
這樣只要四行,不過三元還是比較方便啦,不要三元裡面
12/14 07:02, 31F

12/14 07:02, 1年前 , 32F
又塞三元就好
12/14 07:02, 32F

12/14 07:32, 1年前 , 33F
遵守團隊規範
12/14 07:32, 33F

12/14 07:33, 1年前 , 34F
現在各種dis同事長官
12/14 07:33, 34F

12/14 07:35, 1年前 , 35F
一層可,多層不要
12/14 07:35, 35F

12/14 07:39, 1年前 , 36F
佔6行沒那麼嚴重,以後隨需求擴充或調整,code亂長更麻煩
12/14 07:39, 36F

12/14 07:39, 1年前 , 37F
if-else裡面只有assign一個變數的話 很ok啊
12/14 07:39, 37F

12/14 07:40, 1年前 , 38F
三元盡量只用一層就好
12/14 07:40, 38F

12/14 07:40, 1年前 , 39F
你這個例子沒啥問題,有問題的是像這種
12/14 07:40, 39F
還有 162 則推文
12/16 13:16, 1年前 , 202F
就跟一夜情一樣,講好就好了
12/16 13:16, 202F

12/16 13:31, 1年前 , 203F
糟糕,我很常寫巢狀的三元,不過有換行排版應該還好吧
12/16 13:31, 203F

12/16 14:57, 1年前 , 204F
拆開比較好放中斷點
12/16 14:57, 204F

12/16 15:45, 1年前 , 205F
你前輩就是屬於永遠不會碰 GO/kotlin 的那種人
12/16 15:45, 205F

12/16 15:45, 1年前 , 206F
還是塊陶吧
12/16 15:45, 206F

12/16 15:46, 1年前 , 207F
我猜你們公司還停留在 java7,用 lambda 他還不馬上罵髒話
12/16 15:46, 207F

12/16 19:33, 1年前 , 208F
工作就是看上頭爽不爽 能不能接受 如果上頭喜歡這樣
12/16 19:33, 208F

12/16 19:34, 1年前 , 209F
你不爽也得用 這是雙方面的 但如果這都不能講那也就
12/16 19:34, 209F

12/16 19:35, 1年前 , 210F
沒有所謂的溝通 基本上都有一些公司所謂的溝通是這樣
12/16 19:35, 210F

12/16 19:36, 1年前 , 211F
很想講這不叫溝通好嗎
12/16 19:36, 211F

12/17 00:06, 1年前 , 212F
說難讀的應該是文盲吧
12/17 00:06, 212F

12/17 11:56, 1年前 , 213F
難讀懂的應該是說這種寫成一行吧 result=a?b?c:d:e?f:g
12/17 11:56, 213F

12/17 11:58, 1年前 , 214F
不是說看不懂,但是寫成if else要看懂比較快阿
12/17 11:58, 214F

12/17 16:51, 1年前 , 215F
程式要寫給別人看懂,不是自己
12/17 16:51, 215F

12/17 17:27, 1年前 , 216F
單純 判斷0、1寫一行可能大家比較能接受 不然改起來很麻煩
12/17 17:27, 216F

12/18 14:07, 1年前 , 217F
那表示說難讀懂的連表達都不會啊 那叫多層的難讀懂
12/18 14:07, 217F

12/19 10:34, 1年前 , 218F
不用省行數
12/19 10:34, 218F

12/19 13:23, 1年前 , 219F
不要太長的變數或裡面又有巢狀3元判斷...
12/19 13:23, 219F

12/19 22:49, 1年前 , 220F
最近看Software Engineering at Google 作者就有講G社
12/19 22:49, 220F

12/19 22:50, 1年前 , 221F
內部就避免這種使用,因為你的code會被其他team閱讀
12/19 22:50, 221F

12/19 22:51, 1年前 , 222F
應該要讓其他人對你的code一目瞭然,炫技不是第一要務
12/19 22:51, 222F

12/20 00:21, 1年前 , 223F
還好吧 python 不用這個我反而看不懂
12/20 00:21, 223F

12/20 09:46, 1年前 , 224F
看你的條件內容是怎樣
12/20 09:46, 224F

12/22 07:54, 1年前 , 225F
有些人為了炫技寫到整個code是很短沒錯但可讀性爆低
12/22 07:54, 225F

12/22 07:54, 1年前 , 226F
比長code還難開發
12/22 07:54, 226F

12/22 07:57, 1年前 , 227F
團隊開發遇到硬要拿leetcode上面那套炫技手法來寫cod
12/22 07:57, 227F

12/22 07:57, 1年前 , 228F
e的很痛苦
12/22 07:57, 228F

12/22 07:58, 1年前 , 229F
有時候多個一兩行就會好讀許多卻硬要為了少那一行把
12/22 07:58, 229F

12/22 07:58, 1年前 , 230F
整個code變的很詭異
12/22 07:58, 230F

12/22 12:10, 1年前 , 231F
我覺得不要裝B乖乖寫多行一點,註解多一點詳細一點
12/22 12:10, 231F

12/23 01:14, 1年前 , 232F
我有點好奇巢狀三元可讀性有很差嗎?我常寫沒覺得有
12/23 01:14, 232F

12/23 01:14, 1年前 , 233F
閱讀問題?還是你們看到的巢狀三元都用換行縮排來排
12/23 01:14, 233F

12/23 01:14, 1年前 , 234F
版?
12/23 01:14, 234F

12/23 01:15, 1年前 , 235F
都沒換行縮排來排版
12/23 01:15, 235F

12/23 16:29, 1年前 , 236F
我覺得是習慣問題 code style也是內部講好就好
12/23 16:29, 236F

12/23 16:31, 1年前 , 237F
另外能把code寫到人家看不懂也是你的本事
12/23 16:31, 237F

12/24 00:00, 1年前 , 238F
看con 很直觀可以 稍微需要想的就不要 看很快的時
12/24 00:00, 238F

12/24 00:00, 1年前 , 239F
候很容易想錯 ex err == null ?
12/24 00:00, 239F

12/25 01:30, 1年前 , 240F
看不懂就請他寫註解
12/25 01:30, 240F

12/25 22:34, 1年前 , 241F
我覺得寫三元沒比較厲害
12/25 22:34, 241F
文章代碼(AID): #1ZcAkYOH (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 15 篇):
文章代碼(AID): #1ZcAkYOH (Soft_Job)