第6章 当你编码时 While You Are Coding
不主动思考他们的代码的开发者是在靠巧合编程——代码也许能工作,但却没有特别的理由说明它们为何能工作。
31. 靠巧合编程
提示44: Don't Program by Coincidence
不要靠巧合编程
怎样深思熟虑地编程?
- 总是意识到你在做什么。
- 不要盲目地编程。试图构建你不完全理解的应用,或是使用你不熟悉的技术,就是希望自己被巧合误导。
- 按照计划行事
- 依靠可靠的事物。不要依靠巧合或假定
- 为你的假定建立文档
- 不要只是测试你的代码,还要测试你的假定
- 为你的工作划分优先级。把时间花在重要的方面
- 不要做历史的奴隶。不要让已有的代码支配将来的代码。如果不再适用,所有的代码都可被替换。即使是在一个程序中,也不要让你已经做完的事情约束你下一步要做的事情——准备好进行重构
32. 算法速率
注重实效的程序员几乎每天都要使用:估计算法使用的资源——时间、处理器、内存,等等
时间复杂度O(),把O视为“阶为……”(on the order of)的意思。
提示45: Estimate the Order of Your Algorithms
估算你的算法的阶
如果你不能确定代码需要多少时间,或是要使用多少内存,就试着运行它,变化输入记录的数目,或可能影响运行时间的无论什么东西。随后把结果绘制成图。
提示46: Test Your Estimates
测试你的估算
33. 重构
周遭所见,皆是变易与衰败……——H.F.Lyte,《请与我同在》
你应在何时进行重构:
- 重复
- 非正交的设计
- 过时的知识
- 性能
提示47: Refactor Early,Refactor Often
早重构,常重构
怎样进行重构:
- 不要试图在重构的同时增加功能
- 在开始重构之前,确保你拥有良好的测试。尽可能经常运行这些测试
- 采取短小、深思熟虑的步骤:把某个字段从一个类移往另一个,把两个类似的方法融合进超类中。
要管理痛苦:如果它现在有损害,但以后的损害会更大,你也许最好一劳永逸地修正它。
34. 易于测试的代码
提示48: Design to Test
为测试而设计
提示49: Test Your Software,or Your Users Will
测试你的软件,否则你的用户就得测试
35. 邪恶的向导
提示50: Don't Use Wizard Code You Don't Understand
不要使用你不理解的向导代码
网友评论