Re: [閒聊] 尋求比nest-if更優美的解決辦法
※ 引述《yauhh (喲)》之銘言:
: 當然善用shortcut-circuit evaluation寫邏輯句子很容易:
: (data == NULL) && printf("Data not found.")
: || (checkData(data) != 0) && printf("Data is invaild.")
: || (modifyData(data) != 0) && printf("Data modification failed.")
: || (fireDataChanged(data) != 0) && printf("Observer call failed.")
: || (saveDataIntoFile(data) != 0) && printf("Data storage failed.")
: || printf("Finally succeed...");
: 邏輯運算一般是 && 優先權高於 ||.
: 使用 ? : 還可以把stage埋進去,或者把部份處理完的資料傳回來.
: 至於看起來是不是簡單明瞭,邏輯句基本上是最簡單明瞭的,
: 看不懂這種句子的人是自己基礎學科沒有學好.
我說啊,這方法真的很糟糕。先不論它容不容易懂好了,
要用這方法有一個必要條件,那就是 printf 必須要有回傳值,
而且回傳值可以進行 true/false 的判斷。
如果回傳 void 那根本編不過。
大部份的情況中,處理錯誤並非只是單純的 printf 而已,
可能還會對之前的指令進行 rollback,
如果要加入這部份的處理,使用 short-circuit 會顯得非常複雜。
事實上我覺得用 exception 才是最簡潔的方式,
當然要特別注意 resource leak 就是了。
結論:short-circuit 在 C_and_CPP 玩一玩就好,
拜託別在大型 project 這樣搞。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.15.163
推
12/07 13:54, , 1F
12/07 13:54, 1F
推
12/07 14:09, , 2F
12/07 14:09, 2F
→
12/07 14:14, , 3F
12/07 14:14, 3F
推
12/07 14:51, , 4F
12/07 14:51, 4F
推
12/07 16:40, , 5F
12/07 16:40, 5F
→
12/07 19:53, , 6F
12/07 19:53, 6F
→
12/07 19:54, , 7F
12/07 19:54, 7F
→
12/07 19:55, , 8F
12/07 19:55, 8F
→
12/07 19:56, , 9F
12/07 19:56, 9F
→
12/07 19:56, , 10F
12/07 19:56, 10F
→
12/07 19:57, , 11F
12/07 19:57, 11F
→
12/07 19:57, , 12F
12/07 19:57, 12F
→
12/07 23:09, , 13F
12/07 23:09, 13F
→
12/07 23:09, , 14F
12/07 23:09, 14F
→
12/07 23:09, , 15F
12/07 23:09, 15F
→
12/07 23:10, , 16F
12/07 23:10, 16F
→
12/07 23:11, , 17F
12/07 23:11, 17F
→
12/07 23:14, , 18F
12/07 23:14, 18F
→
12/07 23:18, , 19F
12/07 23:18, 19F
→
12/07 23:18, , 20F
12/07 23:18, 20F
推
12/07 23:52, , 21F
12/07 23:52, 21F
推
12/08 00:16, , 22F
12/08 00:16, 22F
→
12/08 00:52, , 23F
12/08 00:52, 23F
→
12/08 00:52, , 24F
12/08 00:52, 24F
→
12/08 00:53, , 25F
12/08 00:53, 25F
→
12/08 00:54, , 26F
12/08 00:54, 26F
→
12/08 00:54, , 27F
12/08 00:54, 27F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 14 之 21 篇):