Contents

The Power of Ten – Rules for Developing Safety Critical Code列出了NASA关于如何写出安全代码的10条规则。

  1. 所有的控制流程非常简单,不能有GOTO,不能有直接或间接的递归。
  2. 所有的循环都必须有一个固定的上届。比如有一个非常简单的静态检查工具可以证明这个上届不会被超过。
  3. 在初始化之后不能再用动态内存分配。
  4. 所有函数都必须可以在1页纸打印出来,就是说不能超过60行。
  5. 每个函数平均要有2个Assert,Assert都不能有副作用,并且定义为布尔值。
  6. 数据对象的作用域要定义的尽量小。
  7. 每个函数调用别的非void函数时,必须检查返回值。每个函数内部必须做参数验证。
  8. 预处理只能用来包含头文件和简单的宏定义。
  9. 指针的使用要严格限制。不能超过一层的dereference。不能用函数指针。
  10. 所有代码都需要能编译通过,没有警告。每天都要运行最先进的静态检查工具,不能有任何警告。
Contents