這邊不針對效能,也不針對說階層太多,應該用什麼方式重構之類的 只是看到有人提到巢狀的三元運算子,閱讀性太差,應該改回用if else寫 我只是好奇兩者的可讀性有差很多嗎? 以下只是舉例,不是指實務上會真的這樣寫 (1) 三元運算子: int i = condition1 ? condition2 ? condition3 ? 1 : 2 : 3 : 4; (2) if else: int i; if (condition1) { if (condition2) { if (condition3) { i = 1; } else { i = 2; } } else { i = 3; } } else { i = 4; } 單就上面的範例來說,我覺得兩者可讀性差不多,還是只是因為我看習慣產生的錯覺 XD 以我自己的觀點來看,像這種條件式指派單一變數值的情境,三元寫起來比較順手 也不用擔心像在寫 if else 時,因漏寫了 else 導致有情況沒指派到值 -- ※ 發信站: 批踢踢實業坊(ptt-site.org.tw), 來自: 203.204.160.44 (臺灣) ※ 文章網址: https://ptt-site.org.tw/Soft_Job/M.1672157770.A.D00
saxontai: https://www.youtube.com/watch?v=CFRhGnuXG-4 12/28 00:18
MoonCode: 12/28 01:20
ben810514: 有 12/28 01:34
hegemon: 閱讀性差很多好嗎..... 12/28 01:45
unixxxx: 原Po認真? 明顯一閱讀性比較好 12/28 01:57
fuoya: 真的有這麼多人在找包養 12/28 01:57
Ericz7000: :( 12/28 03:35
xxi511: 這種情況兩個都不適用,重寫好嗎 12/28 07:50
cokellen: 覺得差很多 12/28 08:10
knives: 寫成波動拳最棒 12/28 08:31
testPtt: 通常會拆開多層 常遇到的問題是每層裡的程式碼一長串 12/28 08:42
Apasiri: 有人可以分析一下包養平台的差異嗎 12/28 08:42
testPtt: 如果裡面都是這種簡單內容其實都OK 12/28 08:44
LeoSW: 這種case 我會寫成function,把巢狀結構攤平,增加可讀性以 12/28 08:50
LeoSW: 及維護性 12/28 08:50
sniper2824: 差很多== 12/28 09:20
Lipraxde: Condition 加個 not 就可以攤成平的了... 12/28 10:03
litidi: 那個包養網人最多XD 12/28 10:03
YukiTW: 你這例子看起來(一)比較好懂 12/28 11:07
YukiTW: 但實際上每個判斷式裡的function變多的話,就是(二)比較好 12/28 11:08
qwer338859: 都很醜 拆掉好嗎= = 12/28 11:14
zxcasdjason1: 你看看你在說些什麼 XD 12/28 11:20
GLaDOS1105: 都超醜 12/28 11:33
Merzario: 我妹上包養網被我發現= = 12/28 11:33
timsheu: 寫成巢狀是wtf… 12/28 12:02
Alex548291: 醜到流湯 而且這串為啥要一直討論啊 啊就看自己公司規 12/28 12:30
Alex548291: 定啊 幹嘛一直洗 12/28 12:30
leolarrel: 你的錯覺 12/28 13:21
abraxas: 舉一個正常人都會攤平的例子真的有效嗎? 12/28 13:36
Muzaffer: 隔壁桌的人竟然在討論包養... 12/28 13:36
unixxxx: 用function的話 會影響效能 12/28 13:42
WaterLengend: 我曾經看過寫成這樣的可以當主管,聽說一年一百多, 12/28 14:23
WaterLengend: 顆顆 12/28 14:23
hidog: function造成的效能影響通常不大 12/28 14:40
leolarrel: 在某padle效果器,if-else + function 的效能就差很大了 12/28 14:54
MIJice: 樓上是不是被包養 12/28 14:54
leolarrel: 幹死老闆硬要用效能很差的MCU 12/28 14:55
leolarrel: *pedal效果器 12/28 14:57
CoNsTaR: if else 有比較好閱讀 12/28 15:14
gofigure: chatGPT:他們在吵什麼 12/28 15:57
bear1414: 三元在硬體語言如VERILOG在邏輯電路寫法上比較方便 12/28 16:20
SpyTime: 未看先猜這包養 12/28 16:20
testPtt: 畢竟硬體用goto很正常 到軟體就可能被罵 12/28 16:28
unixxxx: goto js 很常見 12/28 16:35
viper9709: 拜託別用第一種寫... 12/28 18:03
NCKUFatPork: 兩個寫法都很爛,請用guard clauses 12/28 18:50
MoonCode: 什麼語言沒有 elseif 且沒有替代品 12/28 20:22
Toth: 一定又是這包養 12/28 20:22
kyoe: guard clauses+1 12/28 21:22
DendiQ: 寫那樣 SonarQube 會叫 12/28 22:00
pot1234: if else一定要弄三層?寫法一也很討厭 12/28 22:12
viper9709: 巢狀的三元會是一場災難...腦袋要轉兩次@@ 12/28 23:40
BlueBird5566: 就是習不習慣的問題啊= = 12/29 00:07
Asterix: 包養平台不意外 12/29 00:07
BlueBird5566: 1、2的可讀性其實根本一樣 就是習慣問題 12/29 00:07
BlueBird5566: 說巢狀難讀的是指全寫在一行 沒像你這樣排版的 12/29 00:08
BlueBird5566: 有的還是JAVA + HTML + JSTL 組出來 12/29 00:10
pot1234: 覺得寫法1比較困難閱讀的原因是沒括號又少見,要稍微想 12/29 01:24
pot1234: 一下。if else雖然縮三層很煩但不太可能看錯。會寫出這 12/29 01:24
AdamShi: 覺得包養網EY嗎 12/29 01:24
pot1234: 種code的話排版大概也不會都排的跟你一樣,要多花一下時 12/29 01:24
pot1234: 間找冒號,個人感覺啦。 12/29 01:24
Sunal: 實務上都還是會用formatter吧,review時不會看到這種特殊 12/29 04:03
Sunal: 排版 12/29 04:03
MoonCode: 高手 12/29 04:07
lezabo: 包養網站葉配啦 12/29 04:07
ezaki: 自己舉的例看不出差別,有點可怕 12/29 08:38
lycantrope: 高手境界 12/29 12:40
GoalBased: 你的例子,我覺得可讀性差不多,但我會寫2 12/29 13:45
GoalBased: 如果說以後這段都不改,就沒差,會被改2我覺得好一點 12/29 13:46
GoalBased: 中斷點也好下一點 12/29 13:46
silberger: 記者收了包養網多少啦 12/29 13:46
GoalBased: 可讀性本來就要根據現實情況做判斷 12/29 13:47
GoalBased: 跟你說怎樣一定好的,多數是見樹不見林 12/29 13:48
ku72: 老實說 只要沒事先規範兩個做法我都會接受 如果都只看自己愛 12/29 21:02
ku72: 看的code style那接手到爛code或者工作需要得去看別人的code 12/29 21:02
ku72: 能保證都是自己要的寫法? 12/29 21:02
xayile: 包養真亂 12/29 21:02
hongsiangfu: 第一種寫法用反邏輯別縮排 12/30 07:08
hongsiangfu: cd1?1:(換行)cd2?2:(換行)...(cdn)cdn:n:m 12/30 07:11
hongsiangfu: 曾在verilog語法看過類似排版 12/30 07:12
hongsiangfu: 更正cdn?n:m 12/30 07:12
ku399999: 巢狀三元分沒有明確分界線 需靠排版維持 即使不討論是否 12/30 09:18
cazo: 演藝圈一堆包養好嗎 12/30 09:18
ku399999: 好讀 巢狀三元更難改也是不爭的事實 12/30 09:18
kyoe: php 現在都用 ?: 跟 ?? 香~ 12/30 12:04
acgotaku: 第一種看到會想吐吧,寫多層判斷就很噁心了,再寫成這樣 12/30 16:38