-
答案 1:
我写过一篇《再抽象一点》,可供参考:techsingular.net/...然后,我推荐一篇很好的文章《ORM is an anti-Pattern》:seldo.com/weblog...抽象,是对原有接口的简化,或者说对原有接口常用模式的固化。C 就是汇编的 design pattern。在《再抽象一点》里,我把抽象分成 bottom-up 和 top-down 两种,源自Donald Knuth 的话。归结起来就是这么几条:Top-down 是常态。
Bottom-up 是 top-down 的中断形式。
纯粹的 bottom-up,要么是大公司的政治产物,要么失败。
ORM 就是 bottom-up 抽象。
如果一个 app 采用 OOP 方式,必须用某种方式把 DB 映射成自己需要 object model。这是《ORM is an anti-Pattern》认可的。即 top-down 方式。
-
答案 2:
设计模式是针对C++/Java这些静态面向对象语言总结的,对于动态语言来讲,很多模式已经是过度抽象了。对于Java这些静态语言,要扩展就要大量运用接口,往往搞得继承层次过深(看Spring的继承类WebXmlApplicationContext估计有7,8层),很多为扩展准备的中间层明显是多余的,属于过度抽象。很多模式从实现看已经过度设计了,实际上要求从语法程度上进一步抽象,以更见的方法实现该模式,这就是动态语言的威力所在。 -
答案 3:
我习惯用的判断设计过度的简单方法是:没有抽象前做一个设计;
抽象后做一个设计;
拉一个无关人等过来讲解两个设计,让他/她记录自己听到的概念数目。如果1 > 2 则没有过度设计,反之则过度设计了。
-
答案 4:
比如有10个人一起讨论问题,当有5个人不知道你在说什么的时候(很茫然的表情),很可能就是过度抽象了。重申并简化自己的主张,必要时用图形表述,情况可能会好点... -
答案 5:
个人C语言经验:不要去过度思考这个问题,如果有一个团队,就在团队内充分讨论流程,通过模型图讨论。如果没有团队,在自己可以搞清楚的情况下,考虑未来的扩展。但是如果扩展至依赖于接口,相对还是弱了点。在架构上保持分散比在接口上保持抽象要有效的多。
使用设计模式时,如何判断一个问题是否被“过度抽象”了?
2012-01-19 20:19:55 来源: 点击:
相关热词搜索:
上一篇:中世纪时西方城市的公共空间存在于?是否多于同期的中国城市?
下一篇:什么时候中文开始从左往右而非从右往左书写?