成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何像NASA頂級程序員一樣編程 —— 10條重要原則

開發
你知道 NASA 頂級程序員如何編寫關鍵任務代碼么?為了確保代碼更清楚、更安全、且更容易理解,NASA 的噴氣推進實驗室制定了 10 條編碼規則。

如何像NASA***程序員一樣編程 —— 10條重要原則

引言: 你知道 NASA ***程序員如何編寫關鍵任務代碼么?為了確保代碼更清楚、更安全、且更容易理解,NASA 的噴氣推進實驗室制定了 10 條編碼規則。

NASA 的開發者是編程界最有挑戰性的工作之一。他們編寫代碼并將開發安全的關鍵任務應用程序作為其主要關注點。

在這種情形下,遵守一些嚴格的編碼規則是重要的。這些規則覆蓋軟件開發的多個方面,例如軟件應該如何編碼、應該使用哪些語言特性等。

盡管很難就一個好的編碼標準達成共識,NASA 的噴氣推進實驗室(JPL)遵守一個編碼規則,其名為“十的次方:開發安全的關鍵代碼的規則”。

由于 JPL 長期使用 C 語言,這個規則主要是針對于 C 程序語言編寫。但是這些規則也可以很容地應用到其它的程序語言。

該規則由 JPL 的***科學家 Gerard J. Holzmann 制定,這些嚴格的編碼規則主要是聚焦于安全。

NASA 的 10 條編寫關鍵任務代碼的規則:

  1. 限制所有代碼為極為簡單的控制流結構 — 不用 goto 語句、setjmp 或 longjmp 結構,不用間接或直接的遞歸調用。
  2. 所有循環必須有一個固定的上限值。必須可以被某個檢測工具靜態證實,該循環不能達到預置的迭代上限值。如果該上限值不能被靜態證實,那么可以認為違背該原則。
  3. 在初始化后不要使用動態內存分配。
  4. 如果一個語句一行、一個聲明一行的標準格式來參考,那么函數的長度不應該比超過一張紙。通常這意味著每個函數的代碼行不能超過 60。
  5. 代碼中斷言的密度平均低至每個函數 2 個斷言。斷言被用于檢測那些在實際執行中不可能發生的情況。斷言必須沒有副作用,并應該定義為布爾測試。當一個斷言失敗時,應該執行一個明確的恢復動作,例如,把錯誤情況返回給執行該斷言失敗的函數調用者。對于靜態工具來說,任何能被靜態工具證實其永遠不會失敗或永遠不能觸發的斷言違反了該規則(例如,通過增加無用的 assert(true) 語句是不可能滿足這個規則的)。
  6. 必須在最小的范圍內聲明數據對象。
  7. 非 void 函數的返回值在每次函數調用時都必須檢查,且在每個函數內其參數的有效性必須進行檢查。
  8. 預處理器的使用僅限制于包含頭文件和簡單的宏定義。符號拼接、可變參數列表(省略號)和遞歸宏調用都是不允許的。所有的宏必須能夠擴展為完整的語法單元。條件編譯指令的使用通常是晦澀的,但也不總是能夠避免。這意味著即使在一個大的軟件開發中超過一兩個條件編譯指令也要有充足的理由,這超出了避免多次包含頭文件的標準做法。每次在代碼中這樣做的時候必須有基于工具的檢查器進行標記,并有充足的理由。
  9. 應該限制指針的使用。特別是不應該有超過一級的解除指針引用。解除指針引用操作不可以隱含在宏定義或類型聲明中。還有,不允許使用函數指針。
  10. 從開發的***天起,必須在編譯器開啟***級別警告選項的條件下對代碼進行編譯。在此設置之下,代碼必須零警告編譯通過。代碼必須利用源代碼靜態分析工具每天至少檢查一次或更多次,且零警告通過。

關于這些規則,NASA 是這么評價的:

這些規則就像汽車中的安全帶一樣,剛開始你可能感到有一點不適,但是一段時間后就會養成習慣,你會無法想象不使用它們的日子。

此文是否對你有幫助?不要忘了在下面的評論區寫下你的反饋。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-10-25 22:34:34

機器人人工智能系統

2013-07-05 14:59:50

程序員GPU

2013-04-19 10:44:05

程序員禪道

2020-04-06 12:31:25

編程程序員代碼

2020-02-28 15:49:26

2014-02-24 00:40:00

2014-11-10 09:46:57

程序員

2019-01-28 11:54:28

程序員技能溝通

2013-08-22 10:17:51

Google大數據業務價值

2015-03-16 12:50:44

2018-05-25 19:13:01

程序員技能溝通

2012-07-19 14:16:51

編程經驗

2023-04-05 14:19:07

FlinkRedisNoSQL

2015-07-02 14:55:39

款穿戴設備規則Fitbit

2017-05-22 10:33:14

PythonJuliaCython

2021-09-07 10:29:11

JavaScript模塊CSS

2011-10-27 09:42:19

ASP.NET

2021-07-23 09:50:12

程序員技能開發者

2015-09-28 10:09:05

程序員新手

2014-07-11 10:05:31

程序員開發原則
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久区二区三区蜜桃臀 | 亚洲日本一区二区 | 欧美一级片在线看 | 视频1区2区 | 免费黄色录像视频 | 精品欧美一区二区在线观看欧美熟 | 欧美中文字幕 | 日韩色图在线观看 | 婷婷久久综合 | 国产成人精品a视频一区www | 污污免费网站 | 国产一区欧美 | 视频在线亚洲 | 欧美日韩精品一区二区三区四区 | 97视频网站 | 国产精品久久久亚洲 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 91av在线视频观看 | 欧美xxxⅹ性欧美大片 | 免费观看色 | 中文字幕日韩欧美 | 欧美精品一区在线发布 | 99精品99| 新91| 日本粉嫩一区二区三区视频 | 一区二区久久 | 一区二区中文 | 久久久99精品免费观看 | 久久一级免费视频 | 在线观看成人av | 免费成人在线网站 | 红桃视频一区二区三区免费 | 欧美高清视频在线观看 | 一级免费在线视频 | 亚洲一二三区不卡 | 欧美一区在线视频 | 久久久久久免费观看 | 国产精品一区二区免费看 | 国产精品福利久久久 | 激情欧美一区二区三区中文字幕 | 欧美1级 |