看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
Kerlifw:推,我也是這麼做 12/12 09:26