看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《xxxx9659 (嘎嘎嘎嘎嘎)》之銘言: : 因為程式可以長這樣 : bool isSuccess = false; : isSuccess = isSuccess || PlanA(); //先做 A 計畫 : isSuccess = isSuccess || PlanB(); //如果 A 計畫失敗,才做 B 計畫 : isSuccess = isSuccess || PlanC(); //連 B 計畫也失敗,才做 C 計畫 : isSuccess = isSuccess || Error(); //上面都失敗,就顯示錯誤 : 這樣寫感覺很優雅,隨時可以在新增 Plan 純粹看到這個覺得可以寫得更簡單啊 PlanA() || PlanB() || PlanC() || Error(); 一個變數都不用存啊 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.87.113 ※ 編輯: AntaresStar 來自: 111.248.87.113 (03/14 23:42)
LPH66:XDDDD 03/14 23:47
AntaresStar:不過剛剛試一下發現這樣還是會被報warning 03/14 23:48
AntaresStar:所以得用(void)( )把這堆東西包起來 XD 03/14 23:49
xxxx9659:實際上這就是我要做的! 這樣寫很漂亮阿!是吧... 03/15 00:34
tinlans:為什麼不用 if(!PlanA() || !PlanB() || ... ) Error(); 03/15 04:10
tinlans:雖然不太喜歡講正經的東西,但是這樣搞會害接你 code 的 03/15 04:11
tinlans:心裡非常圈叉。 03/15 04:12
tinlans:幫人擦 10 幾年屁股的要是脾氣差一點可能看到就爆炸了... 03/15 04:14
xxxx9659:fn1() || Error(); 這種寫法不好 03/15 05:30
xxxx9659:我只會拿它當暫時性的 debug 技巧 03/15 05:30
xxxx9659:#define Error() 03/15 05:31
xxxx9659: (printf("fn1會錯的行數: %s", __LINE__), false) 03/15 05:31
xxxx9659:這樣可以把整份程式的 fn1() 取代成 (fn1() || Error()) 03/15 05:32
xxxx9659:但是實際的程式的確會這樣寫比較好 03/15 05:32
xxxx9659:if(!PlanA() && !PlanB() && ... ) Error(); 03/15 05:33
AntaresStar:用if(!...)的寫法很容易||跟&&搞錯 03/15 07:50
AntaresStar:通常那樣我會用一串的 if(PlanA()) continue; 之類的 03/15 07:51
※ 編輯: AntaresStar 來自: 111.248.87.113 (03/15 07:56)
tinlans:debug macro 用的話倒是常見。至於 ! && || 搭配只要條件 03/15 18:49
tinlans:看起來沒差太多,不要混雜得太過份,是不會產生混淆的。 03/15 18:50
tinlans:一般遇到要混搭 || && 在 if 裡面的狀況,讓程式比較好讀 03/15 18:51
tinlans:的方式就是寫一個名稱有自我描述能力的函式去包起來。 03/15 18:51