看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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埋進去,或者把部份處理完的資料傳回來. 至於看起來是不是簡單明瞭,邏輯句基本上是最簡單明瞭的, 看不懂這種句子的人是自己基礎學科沒有學好. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.114.215 ※ 編輯: yauhh 來自: 218.160.114.215 (12/07 06:31)
flamerecca:最後兩句話 是故意引戰?XDDDDD 12/07 06:47
bleed1979:我還碰過30行以內程式碼看不懂怪我不寫註解的。 12/07 06:59
yauhh:不要都一講了實話就說是引戰,那種寫法本來就很容易看懂, 12/07 07:04
yauhh:否則 && || ! 這些東西弄出來幹什麼用的. 12/07 07:05
flamerecca:shortcut-circuit evaluation是很容易看懂的東西@@? 12/07 07:05
flamerecca:那....好 其實我學藝不精 失禮了(鞠躬 12/07 07:07
yauhh:認真了. 只是說說長期以來的感想而已. 12/07 07:23
yauhh:我不太了解因為一點點語法不一樣就難以思考是怎麼回事,對我 12/07 07:24
yauhh:來說,寫程式很久之後發現,什麼都物件導向才是難以幫助思考的 12/07 07:25
LPH66:嘛, 我個人是不會認為這篇文裡的邏輯句是簡單明瞭的就是了 12/07 07:28
LPH66:我的觀念裡的簡單明瞭的邏輯句是在 if 或 while 裡面的那些 12/07 07:28
Bencrie:Shell script 好像也是這樣玩耶 XD 12/07 08:43
flamerecca:有人這樣玩 != 這很容易思考 12/07 08:49
bdvstg:我看不懂... >"< 判斷&&列印||判斷&&列印...; 12/07 09:12
ledia:最爛的示範就是這種的吧 XD 12/07 10:04
ledia:前面的例子都還具有一定的 readability 12/07 10:05
james732:不過其實我覺得還挺好懂的.... XDDDDD 12/07 10:47
yoco315:<(_ _)> y大永遠都有辦法不顧眾議標新立異 12/07 11:28
StubbornLin:可以寫到不需要思考就能理解的東西為啥要寫成這鬼樣子 12/07 12:11
loveme00835:您可能忘記在討論看不看得懂之前, 想不想看是先決條件 12/07 12:14
StubbornLin:很多東西不是 0或1 看懂或看不懂 12/07 12:19
StubbornLin:而是花五分鐘看懂 和花三秒鐘看懂的差別... 12/07 12:19
StubbornLin:這種寫法無疑是造成團隊裡其它成員浪費時間在讀這段 12/07 12:19
StubbornLin:最終他們都會看懂 浪費的是整個團隊的成本 12/07 12:20
loveme00835:物件導向很難懂? 我傻眼.. 12/07 12:28
wa120:這招不錯 推 12/07 12:29
awashharp:很好懂的方式 但是應該限於C/C++這種left to right而且 12/07 15:53
awashharp:&&前句子condition不通過就不檢查下個condition的程式吧 12/07 15:54
legnaleurc:C++ 在某個狀況下不會有 shortcut evaluation ... 12/07 16:02
legnaleurc:所以在 C++ 更危險 12/07 16:02
loveflames:哪個狀況? 12/07 16:56
loveme00835:XD 樓上說的是 && || 被重載的情況吧, 或是寫錯 & | 12/07 17:06
loveme00835: ^樓 12/07 17:07
king19880326:這種寫法有在任何知名的大型 project 出現過嗎, 你應 12/07 17:46
king19880326:該還停留在"我寫得程式難閱讀我超強"的階段吧 12/07 17:48
zerodevil:y大好文一推 12/07 17:51
yoco315:y大會跟你說這樣很好讀,就像copy&paste很好maintain一樣 12/07 19:39
xatier:推 shortcut 這招 12/07 20:43
COLDTURNIP:我只想說一句,史上最優美的 if else 終於姍姍來遲了 12/07 22:05
yoco315:突然想到很久以前看到的一張圖,實在太適合你了 :Q 12/08 10:39
ledia:推這張圖 XD 12/08 11:25
loveme00835:0.0 12/08 12:29
Amanoyuri:圖很漂亮,團隊裡有人這樣玩真的很累... 12/08 20:52
awashharp:令人省思的一張圖阿@口@ 12/09 00:19