Re: [問題] 關於OO和檔案開啟

看板C_Sharp作者 (Tomex Ou)時間17年前 (2007/04/03 17:50), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串7/8 (看更多)
※ 引述《Epimenides (No.13)》之銘言: : : 不能先用個if else判斷之後再決定要不要new呢? : 在教OO的概念時有看到書上講 一個class做一件事 把那件事做到好 物件架構都是一層疊著一層而來 當低層的物件沒有善盡其責來防錯 上層的物件就會充滿if/else等冗碼 看了就討厭... 防了再防,只是暫時解決,卻仍然沉淪於輪迴 要跳出來就是從底層去防起,例如: A.DataTable = B.GetDataTable(); 當B.GetDataTable在產生資料過程裏,有可能遇到error或空資料 很多人就會直接認為若是error,就丟null出來。 結果A沒有看說明(b也沒寫),就直接接收,null reference錯誤。 這是誰的錯? 我認為正確的寫法,是b的傳回值一定要是個有效的DataTable 即使裏頭是空的也好。 然而若明知有error,要怎麼讓上層(a)去早點知道 以免繼續錯下去呢(或有利偵錯)? 答案就是B應該在自己的class有錯誤時, throw new Exception("B已知的錯誤"),或者不處理直接讓.net自動抓! 這樣a在使用時,自然會得知問題例外, 有資訊就能互相來討論。 多數人的缺點就是喜歡掩蓋住底層的問題, 這樣的做法,對整個軟體工程都不是好事, -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.1.144

04/04 06:50, , 1F
好文..
04/04 06:50, 1F

04/04 15:12, , 2F
推,一針見血
04/04 15:12, 2F

04/04 15:16, , 3F
我來實作看看 體會一下
04/04 15:16, 3F
文章代碼(AID): #164YDEsr (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #164YDEsr (C_Sharp)