读《程序员修炼之道》

  《程序员修炼之道》原作者:Andrew Hunt & David Thomas  译者:马维达 电子工业出版社

    这本书已经买了好久,但一直没看(没看过的书在我书架上还有好多),不过是偶然间从书架上拿下,翻看了几页,结果我再也放不下手。于是,花了约半月的空闲时间,断断续续将此书读完。
    此书还有一名:《从小工到专家》,我现在明显是小工,并且可能还是不熟练的那种。倒没有奢求看完这本书就变成专家(这种书还没有写出来吧),不过,此书确实得到我很多的认同感,书中许多观点,在我看来都是似曾相识,但又有些模糊,有些若即若离的感觉。直接点,就是这些很正确的观点。我仅限于知道,并未运用于工作中。这本书,让我重温了一些零散的思想。我想,这本书以后我还会经常翻看,如果有一天,我能完全理解书中的每章每节,可能真就成为专家了,呵。
    闲话少说,我用梳头的方式,从头到尾将它梳理一遍,好与不好,各位就见仁见智了。

    本书的英文名直译应该是“注重实效的程序员”,书的前言和第一章主要讲什么是注意实效。作者采用很哲学的语句为我们讲解。一个绝妙的例子开始:“唉呀,我的程序被猫吃了”。我想所有程序员可能都干过类似的事情,一直这样做的程序员可能没得到什么好下场。一连串的告诫:不要容忍破窗户,不要成为躺在逐渐加热的水里的青蛙,不要.....是不是感觉有些意思?反正我觉得挺好玩。然后作者告知我们一些成为实效程序员的小窍门,如:随身带上一本你觉得很得意的杂志。真是有些琐碎,但是好过空洞的建议,我看到了一个注重实效的作者。
    那么,如何做到注重实效呢?第二章开篇提到“不要重复自已”,看似很简单的原则,且慢,当你把何谓重复的定义看完,估计你会坐立不安,OH,原来我们天天都在重复自已。如何让复用更容易,设计中正交的必要性和实施方法。在我以前贫乏的术语中,常用到可扩展性这种乏味的描述,作者形象的将它称之为程序需要具有可撤消性,更为经典的是:你的代码需要学会摇滚,可以“摇”就“摇”,必须“滚”就“滚”。如果你面对一些不可测的项目,你可以采用原型或带进攻性的曳光弹,并且,最好将原型作为学习的手段而非你的代码。最后,作者讲了大多数项目经理最头疼的一件事“估算”,估算当然必要并且重要,不过,很遗憾,个人认为这部分内容没什么新意。
    第三章作者以当前流行的xml(纯文本的作用)开始,讲到程序菜鸟容易忽视的shell命令,用好编辑器的意义,源代码总是需要受控。每个程序员都会有大量时间要面对调试,作者告诉我们该以何种心态面对。而测试时应注意的问题。最后,作者强烈建议程序员要学会一门简单的文本操纵语言(我认为他想说的是Perl,我也正准备花点时间学习一下),为什么?你甚至可以用它来自动生成代码呀!
    当你使用断言时,你是否真的知道其必要性,还是人云亦云?第四章,作者为我们解开颖感,告知我们编程时的一些方法技巧。你应该为代码制定合约,程序该死的时候你一定不要让它苟且的活着,断言的正确用法,何时使用异常,配平资源的技巧,我觉得很有收获。
    程序耦合度,这差不是是个流行词了吧?似乎和前文讲到的正交设计有些关系。第五章重点提到为何要让你的模块间的耦合度降至最少。如何进行元数据编程,用它如何驱动应用。又介绍了一个新名词:时间耦合,进而提出用服务,为并发进行设计,道理说得很明白,不过在在现实中,你是否有此耐性,我觉得就很难说了。然后作者讲到耳边已起茧的MVC,最后一段很有意思,如何用简易的黑板来协调工作流的方法,这也是作者再讲开发中的方法论。
    好了,第6章总算是真的讲到编码了(程序员总是对编码有特别敏锐的嗅觉)。什么是靠巧合进行编程,Kao,看完之后,发现原来我是不合格的程序员。委屈ing。懒惰的侥幸心理,都不允许啊。接着看,看到所带来的危害。再看,如果深思熟虑的编程,我们会得到什么。服了。作者接着讲了几个最基本的概念和知识:算法速率如何正确评估、代码何时,如何重构、什么代码易于测试,如何测试代码。最后,很解气,作者帮俺批判了一下邪恶的向导(当然,如果魔鬼为你所完全掌控,它就会变得可爱了)。
    接下来,作者开始介绍项目开发。第7章先介绍重要的项目前期工作。如何对待需求?面对看似不可能解决的谜题,你该如何?为什么不要冒然启动项目。规范是什么,什么不应该被规范?形式方法工具(如UML工具)为我们带来什么,为什么不要迷信它,千万不要成为它的奴隶。作者告诉我们要取其精华,然后融合进你的工作习惯,俺深以为然。
    最后一章应该是前面的总结,但可能和实际结合最紧密,如何在现有的项目中做到实效性(现在,单干的情况越来越少)。结合了前面所讲的原则。首先,作者强调团队中的个体注重实效的必要性。然后讲到工作中需要自动化,从编码到构建,从测试到流程管理,尽量不要手工。接着是再次强调如何进行无情的测试。开发中的文档应该如何写?要注意些什么?作者重点提醒:在实现功能时不要离用户的期望太远。最后,作者希望大家为自已的作品签上名。
    附A列出了一些书藉、网上资源,以及实用工具。
    附B是书中穿插的习题的答案。作者在前面章节的习题处标上了答案的页数,并且在答案处重复了题目,这很有必要。
    然后是索引(中文书好象从来都不注重这点),不过,为中文译本保留英文索引,感觉意义不大。
    最后再次列出了书中的重点提示(我认为是精华)和检查清单(部分问题的自问自答),我又重温了一遍,真不错。

石头 于2005-08-09

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值