极客视点
极客时间编辑部
极客时间编辑部
113230 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/02:56
登录|注册

NASA顶级程序员的10条重要编程原则

讲述:丁婵大小:1.34M时长:02:56
NASA 的开发者是编程界最有挑战性的工作之一,他们编写代码并将开发安全的关键应用程序作为他们主要的关注点。
因此,为了确保代码更清楚、更安全、且更容易理解,NASA 的喷气推进实验室 JPL 制定了 10 条编码规则,这些严格的编码规则主要是聚焦于开发安全。这个规则主要针对于 C 语言而设置,但它也可以很容易地应用到其它程序语言中。这 10 条编程规则分别是:
1. 限制所有代码为极为简单的控制流结构——不用 goto 语句、setjmp 或 longjmp 结构,不用间接或直接的递归调用。
2. 所有循环必须有一个固定的上限值。必须可以被某个检测工具静态证实,该循环不能达到预置的迭代上限值。如果该上限值不能被静态证实,那么可以认为违背该原则。
3. 在初始化后不要使用动态内存分配。
4. 如果用一个语句一行、一个声明一行的标准格式来参考,那么函数的长度不应该超过一张纸的长度,通常这意味着每个函数的代码行不能超过 60。
5. 代码中断言的密度平均低至 每个函数 2 个断言。断言被用于检测那些在实际执行中不可能发生的情况。断言必须没有副作用,并应该定义为布尔测试。当一个断言失败时,应该执行一个明确的恢复动作,例如,把错误情况返回给执行该断言的函数调用者。
6. 必须在最小的范围内声明数据对象。
7. 非 void 函数的返回值在每次函数调用时都必须检查,并且在每个函数内,其参数的有效性都必须进行检查。
8. 预处理器的使用仅限制于包含头文件和简单的宏定义。符号拼接、可变参数列表和递归宏调用都是不允许的。所有的宏必须能够扩展为完整的语法单元。
9. 应该限制指针的使用。特别是不应该有超过一级的解除指针引用。解除指针引用操作不可以隐含在宏定义或类型声明中。还有,不允许使用函数指针。
10. 从开发的第一天起,必须在编译器开启最高级别警告选项的条件下对代码进行编译。在此设置之下,代码必须零警告通过。代码必须利用源代码静态分析工具每天至少检查一次或更多次,且零警告通过。
关于这些规则,NASA 表示,这些规则就像汽车中的安全带一样,刚开始可能感到有一点不适,但是一段时间后就会养成习惯,到时就会无法想象不使用它们的日子。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 池建强
    NASA的要求实在严格啊,看起来是 C 语言的风格。
    1
  • GeekAmI
    大道至简
    1
  • 多态丶
    只是不能立竿见影,但很有效
收起评论
显示
设置
留言
3
收藏
45
沉浸
阅读
分享
手机端
快捷键
回顶部