搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

程序员需要一本面向对象的实践指南吗?

程序员需要一本面向对象的实践指南吗?


blueski推荐 [2005-7-30]
出处:来自网上
作者:王咏刚
 

  《道法自然——面向对象实践指南》是一本关于“实践”的书。我觉得,面向对象的世界就像一个充满刺激的冒险

类游戏,其中最富有挑战性的一道谜题,大概就是理论和实践如何结合的问题了。以下辩论过程是作者根据假想的情境和角色虚拟出来的,不代表作者本人的立场和观点。其实,作者的真实想法是,希望所有喜欢面向对象技术的初学者都能从《道法自然——面向对象实践指南》一书中发现有价值的东西。

  正方:当然当然,面向对象这鬼东西跟王菲的歌儿一样,初听时空灵、澄澈,诱惑力十足,听多了却发现它离我们凡人竟那么遥远,简直是遥不可及。你一定背过无数面向对象的名词术语,你一定记过许多UML的图示和标记,可无论你怎样努力,当你面对实际的软件开发项目时,你是不是有特别无助,不知道从何下手,或者脑子里一片空白,恨不得回到汇编时代的感觉呢?这是为什么?理论难以付诸实践呀!

  反方:错!你的论辩从一开始就犯下了南辕北辙的毛病。我们今天要讨论的是,程序员是否需要一本指导面向对象开发实践的书籍,可你说了半天,都是在论证面向对象的理论要联系实践。理论当然要联系实践,但我们绝对不需要这么一本美其名曰“实践指南”的破玩意儿!理论就是实践的指南,理论就是一切,理论不需要任何多余的演绎!

  正方:老兄,你太天真了!你以为所有程序员都能像你一样无师自通,举一反三吗?我给你举个例子,初学面向对象,初学需求分析的人很容易记住用例分析的基本步骤,很容易掌握用例图的绘制方法,但我见过许多刚学会用例分析的程序员在真正的项目里只画了一、两个用例图就彻底对面向对象的需求分析失去了信心,然后立即投向了传统的、粗放式的需求分析方法———整理(实际上是重复)用户需求、编撰成文并开始设计。难道你不认为这是因为他们缺乏有效的引导和帮助吗?

  反方:注意注意,你提到了用例分析。首先,我必须告诉你,用例分析不仅仅是一种局限于面向对象领域的需求分析方法,面向对象的需求分析技术也不仅仅包含用例分析这一种。其次,我必须通知你,你像古时候的宋国人那样有揠苗助长的毛病!就算有一些程序员在实际项目中将面向对象技术束之高阁,你也没必要逼着他们去阅读一本所谓的“指南”——没有哪一本书可以让菜鸟一夜之间成为高手!对真正的程序员来说,实践本身就是最好的老师,就是最好的指南!

  正方:我怎么又碰见了一位断章取义的兄台?我从来没有说过用例分析只适用于面向对象的需求分析,我也从来没说过面向对象的需求分析只有用例分析这华山一条路!许许多多使用结构化程序设计的程序员也能开发出优雅、高效的软件。我所说的“实践指南”只适用于那些选择了面向对象技术的程序员。就拿架构设计来说,那么多一心想当架构设计师的程序员明知道要耐心学习各种架构设计方法,但他们一看见经典理论书籍上那些枯燥乏味的条条框框,就再也提不起精神了。这个时候,要是有一本“实践指南”告诉他们:“别泄气,架构设计并不是那么难。瞧,对于这么一个实际的案例,你只要如此这般,再如此这般,你的软件就有了可以和Oracle、Apache或者Eclipse媲美的架构模型。”——那该有多好啊!

  反方:别做美梦了!还和Oracle媲美呢!对于大多数面向对象的程序员来说,能按照教科书里的条条框框,把软件架构设计成中规中矩的样子,不出大的差错就谢天谢地了。软件架构这玩意儿,还真不是所有想玩的人都能玩出彩的。像比尔·盖茨那样的“鬼才”当然可以大言不惭地自封为“架构师”,但90%以上的平庸人士,最好还是老老实实地背诵理论书籍里那些看似枯燥,实则妙用无穷的经典架构,比如三层结构,比如MVC模型,比如AOP架构等等。在这方面,程序员根本不需要什么“实践指南”!

  正方:冷静!冷静!老兄,我心目中的那本“实践指南”不但能降低理论知识的学习难度,而且可以激发程序员藏在心底的灵感。对,灵感,每个人都有灵感,只不过有些人意识不到罢了。比方说,我们读《设计模式》的时候,会对那四个无比杰出的大师佩服至极,也会为我们自己无法总结出如此精练的设计模式而沮丧至极。但你想过没有,《设计模式》是死的,程序员是活的,软件也是活的。如果把你心底深处那一点点灵感拿出来,如果你能在一本“实践指南”的帮助下,大胆地在软件设计过程中应用、组合甚至是发明设计模式,那你不也可以拥有和大师一样的成就感和自豪感了吗?

  反方:算了吧,你病入膏肓了。还《设计模式》呢!你知道什么是“设计模式”吗?你知道设计模式是由多少个著名学者花了多少年的时间研究出来的吗?那可是面向对象领域无比正确、无比光荣、无比伟大的设计模式呀!你居然想把自己的灵感与设计模式相结合,你居然还想“发明”设计模式?你简直是在玷污我心中的圣土,你的做法和那些疯狂、残暴的异教徒有什么不同?要让我看呀,你说的那种“实践指南”多半是一本宣传异端邪说,不能登大雅之堂的小册子罢了!

  正方:啊,我终于看到你的真面孔了,你原来是这么一个彻底堕落、彻底伪善的卫教士呀!你知道理论都是发展变化的吗?在面向对象的世界里,没有哪种技术是绝对的和永恒的。就拿UML语言来说,从诞生至今,人们总结出了许多种使用UML的方法,比如拿UML当“草图”来用,拿UML当“蓝图”来用,拿UML当“语言”来用,等等。围绕着UML的标准,又衍生出不同的设计原则和理论体系,比如最近被人们热炒的MDA等等。在这样的情况下,程序员的主观能动性就显得尤为重要,他们也更需要一本“实践指南”来帮助自己完成软件开发里的一次又一次关键的抉择。

  反方:“堕落”?“伪善”?你也太小瞧我老人家了!我每天闻鸡起舞,不停钻研最新的面向对象理论,阅读所有我能找到的理论书籍和理论文章,无论它们是国外大师的经典,还是国内同行的作品……

  正方:那你为什么要拒绝一本面向对象的实践指南呢?是因为它沾上了“实践”二字?即便你要批评或者谩骂它,你也总要先读过它才有资格开口吧?具体来讲,你听说过有一本书,名叫《道法自然——面向对象实践指南》吗?

  反方:《道法自然——面向对象实践指南》?我怎么没听说过?这是本什么书?你看过吗?

  正方:我也没看过呀!可我希望它就是我心目中的那本“实践指南”。至少,我会找来仔细读一读的。你会吗?

  反方:我?也许吧……咦,打住!我突然想起来了,既然你我都没有读过这么一本“实践指南”,那咱们在这里讨论了半天,争得脸红脖子粗的,这不是没事儿找事儿,吃饱了撑的吗?

 

相关文章:
© 2006   www.java-asp.net