您的位置:首页 > 职场人生

面向对象的若干误区

2010-06-13 17:25 176 查看
[align=center]面向对象的若干误区[/align]
在工作之前学过一点点C++。现在回头看觉得那时是还没有弄清什么是OO,对C++的认识仅仅停留在语法级别的。几年工作下来,也在这方面吃了不少苦头,走了不少弯路,对面向对象的认识也陷入过很多误区,现在个人感觉走出了一些,当然没有意识到的还有很多。针对自己绕出来的误区,希望可以以此博文很大家一起探讨!
1 超级类。刚工作的时候,每当我看到了一些有上百个接口的类,我都会有一种高山仰止的感觉。当时我会心中暗想,哪天我也一定要写出这样的类。后来我做到了,却没有太多的成就感。反而在不断的实践中认识到这种类不仅写起来特累,看起来和维护起来更累。及其原因,可能是因为很多人心里都有一个英雄情结,甚至希望自己在团队中可以单打独斗,包办一切。这样的想法影响到OO设计,就会让某个类成为万能的超级类,而剩余的类则成为了不痛不痒的“鸡肋”。这样的设计最初看起来有可能还会挺爽的,有种“超人”降临的感觉。但冷静下来,你会发现没有了平衡和均衡,不单纯,不和谐,个体突出而缺乏整体,因为也就没有了美感。

2 一次到位的设计。人的认识是不断进步和深化的,做面向对象的设计也是这样。尽管大家都认同这一点,但是还是有一些管理人员会无理要求设计人员在设计文档编写阶段将设计定型,然后开始编码。从瀑布开发流程的角度来讲,这是比较理想的和节约成本的。但这种反人类的认识规律的做法往往造成后期设计质量无法提高以及一些既存问题无法对应。在做OO设计的时候通常会在经历一些震荡后慢慢稳定。个人感觉是在刚提出设计后的一段时间内经常是每天都有一些新的认识和想法,有的甚至会推翻以前的。但“人的认识是不断进步的”也不应该成为拒绝确定设计的借口。迫于时间的压力我们通常要在这之间作一个平衡,尽管我们坚信在过一段时间我们会设计得更好。

3 别扭的实现。面向对象给设计提供了更多的空间和可能,但同时也让一些人止步于强求的实现。面对质疑时,“实现就好”成为了他们的至理名言。不过能说出这些是因为我曾经自己也是其中的一分子。记得那时做设计,写了一个基类和两个子类。在基类的一个函数中需要判断实例的类型是哪个子类的。问题是解决了,但是却无法通过我Mentor的检查,而且是他看了一眼就否定了。我那时有点愤怒,心中暗想着“你不认真看看就瞎下结论啊!”但胳膊拧不过大腿,我还是屈服了。通过尝试我在避免了实例的类型判断的情况下也一样实现了功能。前后一比较,漂亮了很多,也OO了很多。这才意识到最初的那种实现就是用OO的语言干反OO的事情。当然还有一些其它的经历,不过共同点就是很多时候这样设计说不通,不自然,一跟别人交流就发现漏洞百出。再到后来我加入了一个不做设计,光讲故事的团队。这个团队不要写太多的设计文档,只要你把要做的事情跟相关的人以故事的形式讲通了,你就可以编码实现了。这段经历至今都让我受益非浅。

待续……

有时候在面向对象的思想面前感觉到自己的渺小和单薄。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息