Re: [分享] C/C++語言工作上的心得

看板C_and_CPP作者 (喲)時間12年前 (2012/04/29 09:39), 編輯推噓0(005)
留言5則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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)

04/29 23:41, , 1F
實在話
04/29 23:41, 1F

04/30 10:07, , 2F
看不懂,原po並沒有說不處理error啊
04/30 10:07, 2F

04/30 10:07, , 3F
只是用exception+RAII遠比goto好多了
04/30 10:07, 3F

04/30 15:25, , 4F
同意樓上
04/30 15:25, 4F

04/30 20:32, , 5F
我只說它處理error,而沒有說原po說不處理error.
04/30 20:32, 5F
文章代碼(AID): #1Fd9lQnG (C_and_CPP)
文章代碼(AID): #1Fd9lQnG (C_and_CPP)