《编程精粹-Writing Clean Code》编码检查表摘录

本文摘自Steve Maguire的《编程精粹》,强调了在编程过程中重视DEBUG版本、错误修正、彻底测试的重要性,以及代码审查、单元测试、警告清除、文档清晰、代码可维护性等多方面最佳实践。作者提倡程序员应深入理解编程规范,确保代码的健壮性和可读性。
摘要由CSDN通过智能技术生成

摘录自Steve Maguire的著作《编程精粹》。

条条框框只是打基础过程中的字典和准绳,目标还是要融会贯通,要自己的心得和创见。

如何使用本表?话两周时间评审一下你的设计和编码实现。先花几分钟时间看一下列表,一旦熟悉了这些问题,就可以灵活自如地按它写代码了。

一般问题

  1. 你是否为程序建立了DEBUG版本?
  2. 你是否将发现的错误及时改正了?
  3. 你是否坚持彻底测试代码,即使耽误了进度也在所不惜
  4. 你是否依靠测试组为你测试代码?
  5. 你是否知道编码的优先顺序?
  6. 你的编译程序是否有可选的各种编译警告?

关于将更改合并到主程序

  1. 你是否做到了warning free?
  2. 你的代码是否未使用Lint?
  3. 你的代码进行了单元测试了么?
  4. 你是否逐步通过了每一条编码路径以观察数据流?
  5. 你是否逐步通过了汇编语言层次上的所有关键代码?
  6. 是否清理过任何代码?是否对修改进行了彻底的测试?
  7. 文档是否指出了使用你的代码有任何危险之处?
  8. 维护人员是否能够理解你的代码?

每当实现了一个函数或子系统之时

  1. 是否用断言证实了函数参数的有效性?
  2. 代码中是否有未定义的或者无意义的代码?
  3. 代码是否创建未定义的数据?
  4. 有没有难以理解的断言?对他们做了解释了没有?
  5. 你在代码中是否作过任何假设?
  6. 是否使用断言警告可能出现的非常情况?
  7. 是否作过防御性程序设计?代码是否隐藏了错误?
  8. 是否用第二个算法来验证第一个算法?
  9. 是否有可用于确认代码或数据的启动检查?
  10. 代码是否包含了随机行为?能消除这些行为么?
  11. 你的代码若产生了无用信息,你是否在DEBUG代码中也把他们置为无用信息?
  12. 代码中是否有稀奇古怪的行为?
  13. 若代码是子系统的一部分,那么你是否建立了一个子系统测试?
  14. 在你的代码和设计中是否有任意情况?
  15. 你是否做了完整性检查呢?
  16. 你是否因为排错程序太大太慢,而将有价值的DEBUG测试抛置一边?
  17. 你是否使用了不可移植的数据类型?
  18. 代码中是否变量或表达式产生上溢或者下溢?
  19. 是否准确地实现了你的设计?还是非常近似地实现了你的设计?
  20. 代码是否不止一次的解同一个问题?
  21. 是否企图消除代码中的每一个if语句?
  22. 是否用过嵌套?:运算符?
  23. 是否已将专用代码孤立出来?
  24. 是否用到了有风险的语言惯用语?
  25. 是否不必要地将不同类型的运算符混用?
  26. 是否调用了返回错误的函数?你能消除这种调用么?
  27. 是否引用了尚未分配的存储空间?
  28. 是否引用了已经释放的存储空间?
  29. 是否不必要的多用了输出缓冲存储?
  30. 是否向静态或全局缓冲区传递了数据?
  31. 你的函数是否依赖于另一个函数的内部细节?
  32. 是否使用了怪异的或者有疑问的C惯用语?
  33. 在代码中是否有挤在一行的毛病?
  34. 代码中有不必要的灵活性么?你能消除他们么?
  35. 你的代码是设计出来的,还是经过多次『试着』求解的结果?
  36. 函数是否小并容易测试?

每当设计了一个函数或子系统后

  1. 此特性是否符合产品的市场策略?
  2. 错误代码是否作为正常返回值的特殊情况而隐藏起来了?
  3. 是否评审了你的界面,它能保证难于出现误操作么?
  4. 是否具有多用途且面面俱到的函数?
  5. 你是否有太灵活的(空空洞洞的)函数参数?
  6. 当你的函数不再需要时,他是否返回一个错误条件?
  7. 在调用点你的函数是否易读?
  8. 你的函数是否有布尔量输入?

修改错误之时

  1. 错误无法消失,是否能找到错误的根源?
  2. 是修改了错误的真正根源,还是仅仅修改了错误的症状?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值