Re: [閒聊] 尋求比nest-if更優美的解決辦法

看板C_and_CPP作者 (下班後才下棋)時間13年前 (2010/12/08 11:46), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串16/21 (看更多)
※ 引述《yauhh (喲)》之銘言: : ※ 引述《wowtiger (小虎)》之銘言: : : 兩三年前會用這個怪格式寫 XD : : (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."): : : /* success */ ? printf("Finally succeed..."); : : 不過後來發現很多人看不懂就沒用了 : : code 還是簡單明瞭最好 : 當然善用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埋進去,或者把部份處理完的資料傳回來. : 至於看起來是不是簡單明瞭,邏輯句基本上是最簡單明瞭的, : 看不懂這種句子的人是自己基礎學科沒有學好. 我看到這個東西彷彿看到有人用英文寫了 "You dare then give me try try see" (你敢就給我試試看) 然後嗆了一句看不懂這種句子的人是自己基礎英文字彙沒有學好 ?: 運算子仍然是大眾所認知的 branch operator 雖然很少人會這樣連用, 但語意仍然不會差別太大 而且很明顯的可以知道 ? 之後會跟著 : 基本上也不太有寫錯的機會 當然, 常在 C_and_CPP 看文章的人應該都知道你很懂得邏輯 XD 基本的 A && B 可以表示 if A then B, 這也不是什麼需要炫耀的知識 但是語言裡面本該指涉 logic operator 的東西 大部份的人第一眼看到都不會把他當作 branch operator 即使很有經驗的 developer 也用慣了 short-circuit evaluation 了 但沒有人跟你一樣會把 logic 和 branch 傻傻分不清楚 我知道你很喜歡把各種東西都當成大一統的東西 那可能對很多人來說真的是一件很炫的事情 branch 可以是 function, 現在 logic 可以是 branch 不過很抱歉, 現實社會中沒什麼人這麼做, 這麼講 也許你可以極力呼籲大家使用你的想法 比如說你可以講講這個做法的好處在哪裡 ? 畢竟說精簡, 你的 byte count 還是輸給 ?: 的用法 說一目了然, 也沒什麼人覺得這樣寫比較看得懂 說效率, 你也只贏過前面那個 multiple function call 的 case 我個人覺得純 if else 組起來的最容易看懂, 對團隊的傷害也最少 如果你有在開發多人合作的程式專案, 善待你的同事吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.51 ※ 編輯: ledia 來自: 140.112.30.51 (12/08 11:47)

12/08 12:46, , 1F
最後一句講得最中肯,除非你寫的程式碼只有自己看,不然還
12/08 12:46, 1F

12/08 12:47, , 2F
是少寫那種"自我感覺良好"的code出來吧!
12/08 12:47, 2F
※ 編輯: ledia 來自: 140.112.30.51 (12/08 13:18)

12/08 17:32, , 3F
不值得跟分不清 語法正確 和 語意正確 的人吵
12/08 17:32, 3F
文章代碼(AID): #1C_l-LFc (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 16 之 21 篇):
文章代碼(AID): #1C_l-LFc (C_and_CPP)