第3章 基本工具

读书笔记 摘自:《程序员修炼之道》


14 纯文本的威力

20. 以纯文本保存知识
Keep Knowledge in Plain Text
纯文本不会过时。它能够帮助你有效利用你的工作,并简化调试和测试。  

通过纯文本,可以获得自描述的、不依赖于创建它的应用的数据流。

主要两个缺点:
①与压缩的二进制格式相比,存储文本所需空间更多;
②要解释及处理纯文本文件,计算上的代价可能更昂贵

保证不过时、杠杆作用、更易于测试、最小公分母(公共标准进行通信)

纯文本是跨平台,跨时间(不会过时)的最佳、最简单的表示法,而且易于理解与对比。有一个常见的误解,就是觉得二进制比文本表示要安全,其实这只是更加晦涩难懂而已,要说安全,加密才是正解。

程序源代码、资源文件、html、xml、注册表文件等等,用的都是纯文本,如果你要设计一个自己的文件格式、优先考虑纯文本,除非你有存储空间与效率上的考虑。

15 shell游戏

21. 利用命令shell的力量
Use the Power of Command Shells
当图形用户界面无能为力时使用shell

虽然Windows下的 shell不如*nix的强大,但是对于自动化一些日常的操作已经足够了,比如我们经常会用一些bat文件来自动化配置。尤其是,当你配合shell命令和Perl这种超强的文本处理语言,你会觉得如鱼得水。 这两年的代码重构工作中,领教了不少Perl + Shell的威力!

16 强力编辑

22. 用好一种编辑器
Use a Single Editor Well
编辑器应该是你的手的延伸;确保你的编辑器是可配置、可扩展和可编程的。

用熟用精一种编辑器,的确是相当好的建议。工欲善其事,必先利其器。平时在windows下N++用的比较多一些,最近考虑切换使用一种更强大、跨平台的工具,比如Emacs或者Vi。

其实这个道理可以说的更宽泛一些,对于经常在IDE中工作的人,精通其工作的IDE,如VS就相当有用了,其效率的提升应该是成倍的。

17 源码控制

23. 总是使用源码控制
Always Use Source Code Control
源码控制是你的工作时间的机器—-你能够回到过去。

这个年代,相信只要是写软件的,肯定都用了SCM,我们公司用的是 Perforce,很多开源项目用SVN、Mercury、或者git之类的,而CVS有逐渐没落之势。”源码让猫吃了”的情形,只发生在我大学写的程序中~~~

18 调试  

24. 要修正问题,而不是发出指责
Fix the Problem, Not the Blame
Bug是你的过错还是别人的过错,并不是真的很有关系—-他仍然是你的问题,他仍然需要修正。
25. 调试时不要恐慌
Don’t Panic When Debugging
做一次深呼吸,思考什么可能是bug的原因。
26. “Select”没有问题
“Select” Isn’t Broken
在 OS或编译器、甚至或是第三方产品或库中很少发现bug。Bug很可能在应用中。
27. 不要假定,要证明
Don’t Assume It-Prove It
在实际环境中—-使用真正的数据和边界条件—-证明你的假定。

实际思考什么可能造成你认为表征了bug的那些症状,不要浪费在“但那不可能发生”起头的思路上。
设法找出问题的根源,而不只是问题的特定表现。

关于调试的方法论介绍,扩展阅读可以是这本书《Debugging》:http://book.douban.com/subject/3228993/

里面”橡皮鸭”这个故事可以作为一个提醒点来提醒自己:在请教别人之前,先把问题向橡皮鸭解释一遍。其实很多时候,当你把问题理顺了,答案也就自然有了。 有过这样的经历吧:当你向同事说完你的问题后,你马上意识到了该如何解决~~~~
而此时可能对方那是还没明白你在问什么
这就是橡皮鸭的作用。

19 文本操纵 

28. 学习一种文本操纵语言
Learn a Text Manipulation Language
你们每天的很大一部分时间处理文本,为什么不让计算机替你完成部分工作呢?

SQL语句
操纵文本是一种乐趣。这种乐趣是我在发现了perl以及正则表达式的强大后才体会到的。我运行shell命令然后用perl解析其输出;我可以在几分钟内解析30000多个源文件并以一种复杂的方式修改代码。那时,你会觉得自己很强大~~~

很难想象,没有perl和正则表达式的日子,我是怎么过来的。

20 代码生成器

29. 编写能写代码的代码
Write Code That Writes Code
代码生成器能提高你的生产效率,并有助于避免重复。

被动代码生成器:参数化模板。
创建新的源文件(注释块),编程语言之间进行一次性转换,生成查找表及其它在运行时计算很昂贵的资源(正弦、余弦表)
主动代码生成器

这其实是特殊的文本操纵,目标在于自动化工作与避免重复。Wizard其实就是一种代码生成器,Doxygen也算是一种,虽然其生成的是代码的文档。在工作中,我们做过根据一个原始的reg文件,产生一个头文件,以编译到代码中。

部分评论摘自豆瓣书评


===========文档信息============
读书笔记由博主整理编辑,供非商用学习交流用
版权声明:非商用自由转载-保持署名-注明出处
署名(BY) :dkjkls(dkj卡洛斯)
文章出处:http://my.youkuaiyun.com/dkjkls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值