作者yauhh (喲)
看板C_and_CPP
標題Re: [分享] C/C++語言工作上的心得
時間Sun Apr 29 09:39:35 2012
※ 引述《calais007 (淺水中)》之銘言:
: 6. goto很好很強大, 拿來error handler非常好, 但每的function都這樣用
: 讓我感受到大量使用goto只顯示你寫code malloc了太多大便, 導致
: 一定要goto來清大便, 不懂為什麼要到處拉屎, 能用array就array為什麼
: 要用pointer來顯示自己的高級?
我覺得,這是一種處理例外的機制. 本來沒做例外處理時,軟體的正確性是
內嵌在每一位寫程式的人工作中,像你所說,你要用linked list還是array,
要即時考慮具體的資料數量,於是,如果你選擇linked list,就要多花相當多時間
寫不會跑出奇怪狀況的碼.
但每個function都加上goto處理error,是在機制上把例外處理的份量,
從寫程式的人的主線思路中分出來,放在後續測試中. 所以當你在寫的時候不要
想很多,後來做測試的時候,就可以根據程式中的明文來定義許多種測試案例,
有一種案例是正常的案例,其他案例是分別去撞各種例外情況.
當然你可以說程式人要有自我修養是不到處放大便, 但是工作上可不是爭論自我修養
的場合. 如果你在一個工作環境中,寫的程式跑了之後,大錯小錯出來,不是用機制
的方式去除錯或容錯,而是把各種錯誤拿去回頭怪你們沒認真做,那就會有幾個問題:
1. 這個錯要怪誰? 選項有主管,使用者,工程師; 2. 可能一個錯的類型是因為定義
需求而未實作,但是在緊張兮兮的主管定義,卻會說成是做錯; 3. 浪費很多時間討論
錯誤的類型,拖延除錯的時間. 而當你用goto機制去抓住error時,意思就是
將保證程式不錯誤的壓力從第一線工作上移開,換得的是比較愉快的工作環境.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.224.243
※ 編輯: yauhh 來自: 59.112.224.243 (04/29 09:41)
→ obj:實在話 04/29 23:41
→ littleshan:看不懂,原po並沒有說不處理error啊 04/30 10:07
→ littleshan:只是用exception+RAII遠比goto好多了 04/30 10:07
→ angleevil:同意樓上 04/30 15:25
→ yauhh:我只說它處理error,而沒有說原po說不處理error. 04/30 20:32