这里有作者之一Dave Thomas在敏捷2009大会上关于此书的演讲(http://www.infoq.com/cn/presentations/dt-pragmatic-programmer)
这本书的成书方式很有意思。作者非常喜欢program,以至于将这本书的写作当成了软件工程,全书用plain text写成,以soruce code(应 该是他们自己发明的领域语言DSL~)的方式组织而成,用他们自己写成的工具build一下后就成了此书,相信他们也以某种版本管理工具对此进行了管理(方便查看版本之间的变化等),并对书中的code进行了单元测试。
想像一下他们怎么写书的(借用HTML的格式猜想一下):
<Title>程序员修炼之道</Title>
<Body>
shell游戏
<Code>/home/Dave/game.sh</Code>
</Body>
Test时会自动测试书中的程序,如:game.sh;Build之后本书便完成了(书中的code文件会自动读入)。
这真是一个很成功的“项目”:
*
Automate Everything.
* 如果需要,则设计自己的小语言
Perl有一个作解释器的包
http://search.cpan.org/~dconway/Parse-RecDescent-1.965001/lib/Parse/RecDescent.pm * Fix Broken Windows
--Fix small thing,Then big thing will not happen.
*
Don't repeat yourself(DRY)
-- code duplication
解决方法: 做成函数,模块,类;采用code generators;采用元程序设计(The art of metaprogramming:
http://www.ibm.com /developerworks/linux/library/l-metaprog1.html);采用设计模式(作者觉得采用模式有可能把问题弄复杂);convertions;metaphors;
-- Project Duplication
Fix by producing procduts; Fix with data-driven designs.
* Do one thing better.
简单,低耦合。
* Do Nothing Twice.
* 代码之前,测试先行。
* 选择好的编码工具能有效地提高效率,避免编码中的小错误。
posted on 2010-08-13 20:34
hex108 阅读(317)
评论(0) 编辑 收藏 引用 所属分类:
Read the book