Re: [閒聊] 尋求比nest-if更優美的解決辦法
看板C_and_CPP作者softwind (software everywhere)時間14年前 (2010/12/07 00:45)推噓5(5推 0噓 7→)留言12則, 7人參與討論串8/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.");
下文43.
其實如果你的問題只是 應該如何撰寫or排列這些condition.
語意不變的對應寫法 就是 "衛句"
if( NULL==data ){
print("data not found");
return;
}
if( checkData(data) == 0 ){
printf("Data is invaild.");
return;
}
/* ... go on ... */
finally, 你可以得到 正確的通過所有測試的input argument.
這樣的寫法 簡潔易讀 擴充性不佳 but...
在這個例子 本來例外狀況就不多 so 我建議用衛句 是最佳寫法
衛句的使用... 不代表一個工程師實作的能力
但是 他代表了一個工程師 對於自己的code 有沒有責任感
如果今天有個錯誤狀況出現 我是應該在我的code中攔截下來?
還是跟大部分工程師寫code一樣 把錯誤丟傳出去
看看哪個雖小工程師要去處理...
(就我的經驗 用衛句攔問題 和沒有用衛句debug時間10倍起跳)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.119.168
推
12/07 00:47, , 1F
12/07 00:47, 1F
→
12/07 00:48, , 2F
12/07 00:48, 2F
推
12/07 00:58, , 3F
12/07 00:58, 3F
→
12/07 00:59, , 4F
12/07 00:59, 4F
→
12/07 01:00, , 5F
12/07 01:00, 5F
→
12/07 01:00, , 6F
12/07 01:00, 6F
推
12/07 01:41, , 7F
12/07 01:41, 7F
推
12/07 12:17, , 8F
12/07 12:17, 8F
→
12/07 15:51, , 9F
12/07 15:51, 9F
→
12/07 15:52, , 10F
12/07 15:52, 10F
推
12/07 21:14, , 11F
12/07 21:14, 11F
→
12/07 21:14, , 12F
12/07 21:14, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 21 篇):