作者H45 (!H45)
看板OOAD
标题Re: 物件导向的缺点 ??
时间Sun Jul 27 09:06:24 2008
※ 引述《legnaleurc (CA)》之铭言:
: : 推 thinkniht :"过度叠床架屋"?什麽意思啊?看不懂=.=+ 07/14 18:47
: : 推 cplusplus :过度抽象化? 07/17 07:55
: : 推 H45 :叠床架屋,私以为是动态连结的意思。 07/17 09:17
: : 推 JustinHere :一层包一层,层层抽象化。。XD 07/20 22:41
: 就是过度抽象化的意思
: 以下举一个很极端的例子:
: 需求是写一个九九乘法表
: 於是你开始分离概念
: 你把"九九"抽象出来,让它可以自由更动,想要99*99也行
: 你把"乘法"抽象出来,让它不只可以做整数乘法
: 也可以传一个functor进去做运算子
: 甚至可以把整数换成浮点数,或其他任何疯狂的物件
: 只要它能够运算
: 你把"表"也抽象出来
: 让它也可以汇出成XML,或是其他格式
: 然後你又考虑到了多绪执行时的优化
: 因此你加入了另一个policy
: 让客户可以选择要单绪优化或是多绪优化
: 恭喜!
: 现在你有了一个神之框架
: 它不只能做九九乘法,连对数表或是T型分布对照表都做得出来
: 还可以在支援多绪时加速执行
: 不过你花了一星期去做它
: 别人只花了二分钟就做完了
抽象化会过度,以此例看的很清楚:
需求搞不清楚,软体的功能也不会清楚。
需求搞得清楚,软体的功能就会很清楚。
人家要的东西如果是「九九乘法表」,软体又何必做一个「九十九乘法表」
更别说「对数表」这种需求压根儿没提到的东西。
要决定什麽模组要抽象化,亦即隐藏实作的细节,只揭露呼叫的介面
主要是看什麽部份会变化、什麽部份不会变化
把那些不会变动的部份写死在程式码中,而那些会变动的,就进行抽象化
在执行期决定最後的数值与函数的参数,或者呼叫动态连结的函式库。
过度的抽象化,我想只有需求不明确或是错误地分析才会导致这样的失误。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.178.147