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

看板C_and_CPP作者 (蒜˙遠古)時間13年前 (2010/12/05 21:37), 編輯推噓5(5014)
留言19則, 9人參與, 最新討論串3/21 (看更多)
if(data != NULL) { if(checkData(data) == 0) { if(modifyData(data) == 0) { if(fireDataChanged(data) == 0) { if(saveDataIntoFile(data) == 0) { printf("Finally succeed..."); } else printf("Data storage failed."); } else printf("Observer call failed."); } else printf("Data modification failed."); } else printf("Data is invaild."); } else printf("Data not found."); 如果這樣呢? if(data == Null) printf("Data not found."); else if(checkData(data) != 0) printf("Data is invaild."); else if(modifyData(data) != 0) printf("Data modification failed."); else if(fireDataChange(data) != 0) printf("Observer call failed."); else if(saveDataIntoFile(data) != 0) printf("Data storage failed."); else printf("Finally succeed..."); 不知道會不會比較好XD 新手 有錯請不吝指證 謝謝:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.47

12/05 21:39, , 1F
晚了XD
12/05 21:39, 1F

12/05 21:39, , 2F
哦@口@!好像戳到了我的盲點XDDD 感覺可行耶XD 大感謝XD
12/05 21:39, 2F

12/05 21:40, , 3F
耶所以不用自刪嗎XD
12/05 21:40, 3F

12/05 21:40, , 4F
刪不了吧XDDDDDDDDDD 不過我很開心有上來問XDDD
12/05 21:40, 4F

12/05 21:43, , 5F
當初怎麼沒有想到這麼基礎的結構…程式寫到暈了XD?
12/05 21:43, 5F

12/05 21:44, , 6F
新手有新手的天真嗎XDDDD
12/05 21:44, 6F

12/05 21:45, , 7F
對不起…原來我是個新手(淚奔)
12/05 21:45, 7F

12/05 21:45, , 8F
哇, 這方法不錯...不過我承認我想了一下才知道為什麼可以
12/05 21:45, 8F

12/05 21:49, , 9F
相當初寫php網頁去判斷使用者輸入也是這麼笨的用nest-if
12/05 21:49, 9F

12/05 21:49, , 10F
現在真的好慚愧XDDD
12/05 21:49, 10F

12/05 23:27, , 11F
原PO別在意,有時因為學的太多反而忘了單純的作法
12/05 23:27, 11F

12/06 01:53, , 12F
我還以為這個蠻常用的,就是把異常行為寫在前面排除掉
12/06 01:53, 12F

12/06 01:53, , 13F
code complete書裡有寫這個方法,能讓code簡潔
12/06 01:53, 13F

12/06 01:54, , 14F
我覺得只是單純原PO腦筋一下子沒有轉過來而已 XD
12/06 01:54, 14F

12/06 14:06, , 15F
程式碼看來是簡潔了 可是這例子對閱讀者反而容易掉入陷阱中
12/06 14:06, 15F

12/06 15:06, , 16F
樓上是說if的判斷閱讀者會以為是"沒有錯誤"的判斷嗎?
12/06 15:06, 16F

12/07 12:53, , 17F
推code complete,那本書好厚啊~~
12/07 12:53, 17F

12/07 19:59, , 18F
+1 有看 code complete 的話應該都會知道要重構成這樣 XD
12/07 19:59, 18F

12/07 21:48, , 19F
Code Complete好厚一本 之前借來只有翻翻前幾章而已orz
12/07 21:48, 19F
文章代碼(AID): #1C-vMl2x (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C-vMl2x (C_and_CPP)