作者tomex (Tomex Ou)
看板C_Sharp
标题Re: [问题] 关於OO和档案开启
时间Tue Apr 3 17:50:02 2007
※ 引述《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
1F:推 horngsh:好文.. 04/04 06:50
2F:推 toplouis:推,一针见血 04/04 15:12
3F:推 Epimenides:我来实作看看 体会一下 04/04 15:16