[Chatter] 為甚麼使用DataTable進出DAL不好?

摘要:[Chatter] : 為甚麼使用DataTable進出DAL不好?


跟朋友討論了,使用DataTable進出DAL的缺點,在這邊做個簡單的紀錄。
缺點條列:
1. DataTable是弱型別的物件,當有錯誤的時候,必須在執行階段才會發現錯誤。而強型別物件,則可以進一步在編譯階段就發現錯誤。
2. DataTable結構將會變成潛規則在系統內流竄,必須經過一層解讀才能取得資料。這層解讀,好一點的會封裝成Class,不好的就是解讀邏輯散落各處。
3. 在設計DataTable結構時,很容易設計成跟資料庫 Schema緊密綁在一起。這樣會造成系統,隱性的相依於資料庫Schema,大大增加了耦合性。


大鈞長官也提了一個,最常被問到的論點:「使用DataTable進出DAL,是弱型別,這樣有更大的彈性。」
反駁的論點是:
1. 設計系統架構,要特別注重的是可維護性,畢竟就整個軟體的生命週期來說,維護期佔了最大的比重。依照上面條列的缺點,弱型別會大大增加維護的困難度。
2. 另外再推回系統架構面,內部系統是否支援這樣的彈性? 如果不支援,這樣的弱型別的彈性就沒有價值了。


歡迎大家留言加入討論 :D

期許自己
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。