看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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