Re: [閒聊] 尋求比nest-if更優美的解決辦法
※ 引述《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
討論串 (同標題文章)