Chinese, Simplified subtitles

← 02-42 初始步骤

Get Embed Code
4 Languages

Showing Revision 1 created 03/26/2013 by 秀隆 杨.

  1. 假设你有个灰常大的程序,根本没时间检查,
  2. 但是你还是要调试啊,
  3. 那此时你应该从它的哪个部位下刀子呢?
  4. 我建议啊,首先,就是定义数据不变量。
  5. 这个可以立即覆盖大部分的程序状态,捕获很多很多的错误。
  6. 其实是用前置条件来检查数据不变量,当然,
  7. 还要人工检查下函数的特定前置条件。
  8. 最后,你在所有没把握的方法里面加入后置条件。
  9. 从这些部分条件开始,再进行扩展,
  10. 才能捕捉各种错误,保持正确。
  11. 为什么我们要从前置条件的数据不变量开始?
  12. 嗯,因为它们相对来说好写一点,又可以捉虫,
  13. 我们只是关注一个方法是否正确,
  14. 如果它的参数正确了,状态也正确就行了。
  15. 基于上述,如果你用的是C/C++,可以用个系统不变量检查器。
  16. 使用它的理解很简单,
  17. 就是它能检查各种内存崩溃的情况,
  18. 如果你的程序确实有内存崩溃的问题的话,
  19. 别的断言都是无效的,它们最终都会是随机的结果。
  20. 用Valgrind这类工具可以检查出很多内存的问题,
  21. 它只要你运行一次程序即可,
  22. 我的一名同事最近离开学术圈去了家石油天然气公司,
  23. 在负责测试。
  24. 他在公司代码中引入的第一个断言,
  25. 只是那么一个断言而已,就立即发现了十几个bug。
  26. 那些工程师吓尿了,(要被解雇啊)。
  27. 这种经历他们前所未闻。
  28. 我不确信你们是否也有这种经历,
  29. 但如果你写完代码,却一个断言都没有,
  30. 加一些吧,你会感觉囧囧有神的。
  31. 为什么我们要从数据不变量开始呢?来个测试。
  32. 选项一,它们覆盖了很多状态。二、它们经常被检查到。
  33. 它们形成了隐含的前置和后置条件,
  34. 因为数据不变量在函数的开头和结尾都应该保持一致。
  35. 最后一项,它们提供了有用的文档。
  36. 因为它们详述了数据结构是如何组织的,
  37. 有哪些前提是程序员不能违背的。
  38. 选择所有正确的答案。COME ON!骚年!