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

《道法自然——面向对象实践指南》一书10月即可问世。网上关心这本书的朋友不少,我在这里也自卖自夸一下,贴两篇我自己写的评论文章吧。


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

王咏刚
2004年8月

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

反方:错!你的论辩从一开始就犯下了南辕北辙的毛病。我们今天要讨论的是,程序员是否需要一本指导面向对象开发实践的书籍,可你说了半天,都是在论证面向对象的理论要联系实践。理论当然要联系实践,但我们绝对不需要这么一本美其名曰“实践指南”的破玩意儿!理论就是实践的指南,理论就是一切,理论不需要任何多余的演绎!当程序员记熟了Jacobson等面向对象大师的理论之后,只要在实践中不断探索,不断总结经验,自然会找到正确的道路,自然会一天天走向成熟。

正方:老兄,你太天真了!你以为所有程序员都能像你一样无师自通,举一反三吗?对大多数人来说,从茫然无知到满腹经纶需要有书籍的导引,从一肚子墨水儿到一身绝活儿同样需要书籍的导引——这就是“实践指南”或类似书籍存在的价值!我给你举个例子,初学面向对象,初学需求分析的人很容易记住用例分析的基本步骤,很容易掌握用例图的绘制方法,但我见过许多刚学会用例分析的程序员在真正的项目里只画了一、两个用例图就彻底对面向对象的需求分析失去了信心,然后立即投向了传统的、粗放式的需求分析方法——整理(实际上是重复)用户需求、编撰成文并开始设计。难道你不认为这是因为他们缺乏有效的引导和帮助吗?如果有一本书告诉他们用例分析的理论如何应用,如何转化成实际的需求分析结果,不就可以帮助他们重建对面向对象的信心了吗?

反方:注意注意,你提到了用例分析。首先,我必须告诉你,用例分析不仅仅是一种局限于面向对象领域的需求分析方法,面向对象的需求分析技术也不仅仅包含用例分析这一种。其次,我必须通知你,你像古时候的宋国人那样有揠苗助长的毛病!就算有一些初学者在前几个项目里无法体会用例分析技术的真正价值,就算有一些程序员在实际项目中将面向对象技术束之高阁,你也没必要逼着他们去阅读一本所谓的“指南”——没有哪一本书可以让菜鸟一夜之间成为高手!对真正的程序员来说,实践本身就是最好的老师,就是最好的指南!当那些不愿或不敢使用面向对象技术的程序员在开发过程中不断碰壁,不断遭遇挫折后,他们自然会想到,要让自己学过的理论真正发挥作用——这种认识一旦产生,他们就会一辈子受用不尽!

正方:我怎么又碰见了一位断章取义的兄台?我从来没有说过用例分析只适用于面向对象的需求分析,我也从来没说过面向对象的需求分析只有用例分析这华山一条路,你却急着驳斥这根本不存在的“口误”!反倒是你自己,说着说着就露馅儿了不是?你凭什么说“那些不愿或不敢使用面向对象技术的程序员”就一定会在开发过程中四处碰壁?面向对象只不过是有效的开发方法之一。许许多多使用结构化程序设计的程序员也能开发出优雅、高效的软件。我所说的“实践指南”只适用于那些选择了面向对象技术的程序员。再跟你举个例子,学过面向对象的人都知道OOA,都知道分析模型,但他们都能理解分析模型在软件开发中的作用吗?他们会不会在实践中采用必要的手段,防止分析模型过于庞大或过于简单呢?他们是否知道如何验证分析模型的有效性呢?

反方:拜托,我也从没说过不使用面向对象技术的人就一定会碰壁,但君子坦荡荡,我是不会跟你一般见识的。你还千万别跟我提什么OOA,提什么分析模型,一提这个我就来气。绝大多数人并不真正懂得OOA的含义,他们甚至无法说出OOA和OOD的本质区别。他们根本就不知道,关于提炼分析模型的方法,面向对象的理论界仍然存在相当多的争论。OOA是面向对象技术里最容易把程序员引入歧途的概念之一,如果没有一种规范的理论指引,初学者一会儿就会被各种相互矛盾的说法绕晕了。所以,学习OOA最重要的是从一而终,也就是坚持某一种理论,不要管其他的说法。一本经典的理论书籍必不可少,但你说的那个什么“实践指南”,恐怕就有添乱的嫌疑了吧?

正方:请不要以你自己的狭隘经验判断你并不一定十分熟悉的世界!你怎么知道撰写“实践指南”的作者一定会给初学者增添学习负担呢?这种指南性的书籍本身就是为经典理论书籍释义明理的好帮手,你喝咖啡还要加点儿咖啡伴侣呢,为什么就不能在阅读大师著作之余,在一本“实践指南”的引导下提高自己吸收和转化知识的能力呢?就拿架构设计来说,那么多一心想当架构设计师的程序员明知道要耐心学习各种架构设计方法,包括面向对象领域的组件架构、子系统架构、分层模型等架构技术,但他们一看见经典理论书籍上那些枯燥乏味的条条框框,就再也提不起精神了。这个时候,要是有一本“实践指南”告诉他们:“别泄气,架构设计并不是那么难。瞧,对于这么一个实际的案例,你只要如此这般,再如此这般,你的软件就有了可以和Oracle、Apache或者Eclipse媲美的架构模型。”——那该有多好啊!

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

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

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

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

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

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

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

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

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

【注:以上辩论过程是作者根据假想的情境和角色虚拟出来的,不代表作者本人的立场和观点。其实,作者的真实想法是,希望所有喜欢面向对象技术的初学者都能从《道法自然——面向对象实践指南》一书中发现有价值的东西。】


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 《面向对象高效编程》是一本面向对象编程为主题的高效编程指南。本书全面介绍了面向对象编程的基本概念、原则和技术,并结合实例详细阐述了如何在实际编程过程中发挥其优势,提高编程质量和效率。 书中首先介绍了面向对象编程的基本概念,包括封装、继承和多态性等。这帮助读者理解面向对象编程的核心思想和基本特征,为后续内容的理解和应用打下基础。 然后,书中系统讲解了面向对象编程的原则和技术,如单一职责原则、开闭原则和依赖倒置原则等。这些原则和技术能够帮助程序员设计出高内聚、低耦合的类和模块,提高代码的可读性和可维护性。 接着,书中详细探讨了面向对象编程的一些常用技术,如设计模式UML建模和重构等。这些技术能够帮助程序员更好地组织和管理代码,提高代码的复用性和可扩展性。 最后,书中提供了大量的实例和案例,帮助读者将理论知识应用到实际编程中。这些实例涵盖了不同类型的项目和应用场景,包括图形界面设计、数据库应用和网络编程等。通过实例的分析和实践,读者能够更深入地理解面向对象编程的优势和应用。 总的来说,《面向对象高效编程》是一本全面介绍面向对象编程的指南,它通过清晰的逻辑结构、丰富的实例和案例,帮助读者理解面向对象编程的基本概念和原则,并掌握相关的技术和方法。无论是初学者还是有一定编程基础的开发者,都可以从中获得受益匪浅。 ### 回答2: 面向对象高效编程是一本关于面向对象编程的PDF书籍。面向对象编程是一种程序设计的方法,它以对象为基本单位,将程序分解为相互独立且具有特定功能的对象,通过对象之间的交互来完成程序的功能。 该书的主题是如何以高效的方式进行面向对象编程。它涵盖了许多方面的内容,包括如何设计和构建对象、如何组织和管理对象之间的关系,以及如何优化和提高程序的性能。 这本书的第一部分介绍了面向对象编程的基本概念和原则,如封装、继承和多态性。它还讨论了如何设计和实现高质量的对象,包括如何定义对象的属性和方法,如何处理对象之间的通信和交互。 第二部分介绍了一些常用的面向对象编程技术和模式,如单例模式、工厂模式和观察者模式。这些技术和模式可以帮助开发人员更好地组织和管理他们的代码,提高代码的可复用性和可维护性。 第三部分重点介绍了如何优化和提高面向对象程序的性能。它涵盖了一些性能调优的技巧和策略,如延迟加载、缓存和并发控制。它还讨论了一些常见的性能问题和解决方案,如内存泄漏和循环引用。 总之,这本《面向对象高效编程》PDF是一本关于如何以高效方式进行面向对象编程的有用资源。它提供了丰富的概念、原则、技术和实践,对于想要提高他们面向对象编程技巧和能力的开发人员来说,是一本不可或缺的指南。 ### 回答3: "C面向对象高效编程"是一本关于面向对象编程(OOP)的PDF文档。面向对象编程是一种软件开发方法,将程序设计抽象为对象的集合,这些对象通过相互之间的通信和交互来完成各种功能。面向对象编程具有很高的可重用性、可维护性和可扩展性,被广泛应用于软件开发领域。 该PDF文档主要探讨了如何在面向对象编程中提高效率。首先,它介绍了面向对象编程的核心概念,如类、对象、继承和多态性等。通过正确理解和运用这些概念,可以更好地组织和管理程序的结构。 其次,文档提供了一些高效编程的技巧和方法。例如,使用封装性来隐藏对象的内部实现细节,以保护数据不被非法访问或修改。同时,通过合理地划分类和模块,可以将程序拆分为相互独立的部分,从而提高并行开发、测试和维护的效率。 此外,文档还强调了重用性的重要性。通过创建可复用的类和组件,可以避免重复编写相似的代码,并提高开发效率。此外,合理使用继承和接口的概念可以实现代码的模块化和灵活性,使得程序更易于维护和扩展。 总的来说,通过阅读"C面向对象高效编程"这本PDF文档,读者可以加深对面向对象编程的理解,并学习到一些提高开发效率的技巧和方法。这将使开发人员能够更好地设计和实现高质量的软件,提高开发效率和代码可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值