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

看板C_and_CPP作者 (喲)時間13年前 (2010/12/07 06:25), 編輯推噓11(13230)
留言45則, 20人參與, 最新討論串10/21 (看更多)
※ 引述《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)

12/07 06:47, , 1F
最後兩句話 是故意引戰?XDDDDD
12/07 06:47, 1F

12/07 06:59, , 2F
我還碰過30行以內程式碼看不懂怪我不寫註解的。
12/07 06:59, 2F

12/07 07:04, , 3F
不要都一講了實話就說是引戰,那種寫法本來就很容易看懂,
12/07 07:04, 3F

12/07 07:05, , 4F
否則 && || ! 這些東西弄出來幹什麼用的.
12/07 07:05, 4F

12/07 07:05, , 5F
shortcut-circuit evaluation是很容易看懂的東西@@?
12/07 07:05, 5F

12/07 07:07, , 6F
那....好 其實我學藝不精 失禮了(鞠躬
12/07 07:07, 6F

12/07 07:23, , 7F
認真了. 只是說說長期以來的感想而已.
12/07 07:23, 7F

12/07 07:24, , 8F
我不太了解因為一點點語法不一樣就難以思考是怎麼回事,對我
12/07 07:24, 8F

12/07 07:25, , 9F
來說,寫程式很久之後發現,什麼都物件導向才是難以幫助思考的
12/07 07:25, 9F

12/07 07:28, , 10F
嘛, 我個人是不會認為這篇文裡的邏輯句是簡單明瞭的就是了
12/07 07:28, 10F

12/07 07:28, , 11F
我的觀念裡的簡單明瞭的邏輯句是在 if 或 while 裡面的那些
12/07 07:28, 11F

12/07 08:43, , 12F
Shell script 好像也是這樣玩耶 XD
12/07 08:43, 12F

12/07 08:49, , 13F
有人這樣玩 != 這很容易思考
12/07 08:49, 13F

12/07 09:12, , 14F
我看不懂... >"< 判斷&&列印||判斷&&列印...;
12/07 09:12, 14F

12/07 10:04, , 15F
最爛的示範就是這種的吧 XD
12/07 10:04, 15F

12/07 10:05, , 16F
前面的例子都還具有一定的 readability
12/07 10:05, 16F

12/07 10:47, , 17F
不過其實我覺得還挺好懂的.... XDDDDD
12/07 10:47, 17F

12/07 11:28, , 18F
<(_ _)> y大永遠都有辦法不顧眾議標新立異
12/07 11:28, 18F

12/07 12:11, , 19F
可以寫到不需要思考就能理解的東西為啥要寫成這鬼樣子
12/07 12:11, 19F

12/07 12:14, , 20F
您可能忘記在討論看不看得懂之前, 想不想看是先決條件
12/07 12:14, 20F

12/07 12:19, , 21F
很多東西不是 0或1 看懂或看不懂
12/07 12:19, 21F

12/07 12:19, , 22F
而是花五分鐘看懂 和花三秒鐘看懂的差別...
12/07 12:19, 22F

12/07 12:19, , 23F
這種寫法無疑是造成團隊裡其它成員浪費時間在讀這段
12/07 12:19, 23F

12/07 12:20, , 24F
最終他們都會看懂 浪費的是整個團隊的成本
12/07 12:20, 24F

12/07 12:28, , 25F
物件導向很難懂? 我傻眼..
12/07 12:28, 25F

12/07 12:29, , 26F
這招不錯 推
12/07 12:29, 26F

12/07 15:53, , 27F
很好懂的方式 但是應該限於C/C++這種left to right而且
12/07 15:53, 27F

12/07 15:54, , 28F
&&前句子condition不通過就不檢查下個condition的程式吧
12/07 15:54, 28F

12/07 16:02, , 29F
C++ 在某個狀況下不會有 shortcut evaluation ...
12/07 16:02, 29F

12/07 16:02, , 30F
所以在 C++ 更危險
12/07 16:02, 30F

12/07 16:56, , 31F
哪個狀況?
12/07 16:56, 31F

12/07 17:06, , 32F
XD 樓上說的是 && || 被重載的情況吧, 或是寫錯 & |
12/07 17:06, 32F

12/07 17:07, , 33F
^樓
12/07 17:07, 33F

12/07 17:46, , 34F
這種寫法有在任何知名的大型 project 出現過嗎, 你應
12/07 17:46, 34F

12/07 17:48, , 35F
該還停留在"我寫得程式難閱讀我超強"的階段吧
12/07 17:48, 35F

12/07 17:51, , 36F
y大好文一推
12/07 17:51, 36F

12/07 19:39, , 37F
y大會跟你說這樣很好讀,就像copy&paste很好maintain一樣
12/07 19:39, 37F

12/07 20:43, , 38F
推 shortcut 這招
12/07 20:43, 38F

12/07 22:05, , 39F
我只想說一句,史上最優美的 if else 終於姍姍來遲了
12/07 22:05, 39F

12/08 10:39, , 41F
突然想到很久以前看到的一張圖,實在太適合你了 :Q
12/08 10:39, 41F

12/08 11:25, , 42F
推這張圖 XD
12/08 11:25, 42F

12/08 12:29, , 43F
0.0
12/08 12:29, 43F

12/08 20:52, , 44F
圖很漂亮,團隊裡有人這樣玩真的很累...
12/08 20:52, 44F

12/09 00:19, , 45F
令人省思的一張圖阿@口@
12/09 00:19, 45F
文章代碼(AID): #1C_MBdo5 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 10 之 21 篇):
文章代碼(AID): #1C_MBdo5 (C_and_CPP)