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

看板C_and_CPP作者 (CA)時間14年前 (2010/12/06 23:48), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串11/21 (看更多)
※ 引述《awashharp (AwA)》之銘言: : 最近在寫一些網路server相關的程式, : 為了要產生足夠詳盡的錯誤訊息給使用者,常常會發現用了很深的nest-if程式… : 像是: : 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."); 如果是 C++ 的話 ... 我通常是用 exception 說 if( data == NULL ) { // error return } try { checkData( data ); modifyData( data ); fireDataChanged( data ); saveDataIntoFile( data ); } catch( DataInvalidError & e ) { // do some roll back thing } catch( std::exception & e ) { // what ever error } // here should be fine 呃, 本質上也是利用類似 setjump 的效果啦 純 C 的話 ... 我應該也是會用連串的 if-else 雖然說彈性有比較差, 但是不會想要再增加 function pointer array 或是 State Pattern 的複雜度 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.252.167

12/12 09:26, , 1F
推,我也是這麼做
12/12 09:26, 1F
文章代碼(AID): #1C_NPQbO (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 11 之 21 篇):
文章代碼(AID): #1C_NPQbO (C_and_CPP)