《程序员修炼之道》Tips摘录05

第6章 当你编码时 While You Are Coding

不主动思考他们的代码的开发者是在靠巧合编程——代码也许能工作,但却没有特别的理由说明它们为何能工作。

31. 靠巧合编程

提示44: Don't Program by Coincidence
不要靠巧合编程

怎样深思熟虑地编程?

  1. 总是意识到你在做什么。
  2. 不要盲目地编程。试图构建你不完全理解的应用,或是使用你不熟悉的技术,就是希望自己被巧合误导。
  3. 按照计划行事
  4. 依靠可靠的事物。不要依靠巧合或假定
  5. 为你的假定建立文档
  6. 不要只是测试你的代码,还要测试你的假定
  7. 为你的工作划分优先级。把时间花在重要的方面
  8. 不要做历史的奴隶。不要让已有的代码支配将来的代码。如果不再适用,所有的代码都可被替换。即使是在一个程序中,也不要让你已经做完的事情约束你下一步要做的事情——准备好进行重构

32. 算法速率

注重实效的程序员几乎每天都要使用:估计算法使用的资源——时间、处理器、内存,等等

时间复杂度O(),把O视为“阶为……”(on the order of)的意思。

提示45: Estimate the Order of Your Algorithms
估算你的算法的阶

如果你不能确定代码需要多少时间,或是要使用多少内存,就试着运行它,变化输入记录的数目,或可能影响运行时间的无论什么东西。随后把结果绘制成图。

提示46: Test Your Estimates
测试你的估算

33. 重构

周遭所见,皆是变易与衰败……——H.F.Lyte,《请与我同在》

你应在何时进行重构:

  1. 重复
  2. 非正交的设计
  3. 过时的知识
  4. 性能

提示47: Refactor Early,Refactor Often
早重构,常重构

怎样进行重构:

  1. 不要试图在重构的同时增加功能
  2. 在开始重构之前,确保你拥有良好的测试。尽可能经常运行这些测试
  3. 采取短小、深思熟虑的步骤:把某个字段从一个类移往另一个,把两个类似的方法融合进超类中。

要管理痛苦:如果它现在有损害,但以后的损害会更大,你也许最好一劳永逸地修正它。

34. 易于测试的代码

提示48: Design to Test
为测试而设计

提示49: Test Your Software,or Your Users Will
测试你的软件,否则你的用户就得测试

35. 邪恶的向导

提示50: Don't Use Wizard Code You Don't Understand
不要使用你不理解的向导代码

你可能感兴趣的:(《程序员修炼之道》Tips摘录05)