让工具变为双手的延伸
纯文本的威力
Keep knowledge in Plain Text.用纯文本保存知识。
文本的威力:不过时;杠杆作用(每一样工具都可以工作在纯文本上);更易于测试;
纯文本是永远的公共通信标准。
Shell游戏
别受限于GUI界面,回到文本操作吧,让Shell成为你的朋友。
Use the Power of Command Shells.利用命令Shell的力量。
Cygwin,UWIN是Windows下的Unix Shell工具实现。
强力编辑
Use s Single Editor Well.用好一种编辑器。
编辑器特性:可配置,可扩展,可编程;
Emacs是一个很好的编辑器,Vi也是,EditPlus也是。
源码控制
进步远非游变化组成,而是取决于好记性。不能记住过去的人,被判重复过去。
源码控制系统(SCCS)是一个长效的Undo功能。我们可以在主干上开发,也可以生成一些完整的分支提供给客户。如果分支情况良好,可以考
虑将分支和主支合并。
Always Use Source Code Control.总是使用源码控制。
无论怎么样,只要你在计算机上工作就要使用它。
VSS,CVS,PCVS,SVN都是很不错的版本控制系统,还有就是ClearCase.
调试
调试的目的:解决问题
Fix the Problem,Not the Blame.修正问题而不是指责。
面对Bug千万不要恐慌或者认为那是不可能的,既然发生了就要积极面对它。
如何暴露Bug:
1.最好可以和报告Bug的人面谈一下,这样可以搜集更多的数据;
2.人工合成测试不能足够地演练应用,必须设计测试边界条件同时实现在现实中用户地使用模式;
测试策略
别让Bug离你太远,否则会捉不到它地。
1.使数据可视化:Variable name = data value.(直观地数据表达方式)
2.跟踪:
a.把小诊断消息打印到屏幕上或者文件中,例如什么printf或者System.out.println之类的;
b.栈的踪迹(Stack trace)。
3.橡皮鸭:对着别人解释你的代码,说着说着Bug就出来了;
4.消除过程:找问题先找自己的问题,再找别人的问题;再提交Bug报告前,必须先消除你代码中的Bug.
造成惊讶的要素:发生了,就认了把,然后努力去解决它。
Don't Assume it-Prove it.不要假定,要证明。
以后就别在说:“ Oh,My god”了。
文本操纵
Learn a Text Mainpulation Language.学习一种文本操纵语言。
用途列举:数据库维护,属性访问,测试数据生成,写书,接口,生成文档……
代码生成器
Write Code that Writes Code.编写能编写代码的代码。
被动代码生成器:只运行一次来生成结果
1.创建新的源文件;
2.在变成语言只间进行一次转换;
3.生成查询表及其他运行时很昂贵的资源;
主动代码生成器:在每次需要其结果时被使用
取某项知识的一种表示形式,将其转换未你的应用需要的所有形式,说白了就是格式转换。