音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

[推薦]程序的書寫規(guī)則(程序的編碼規(guī)范)

作者:liuli9230 欄目:單片機
隨著軟件產(chǎn)品的功能增加和版本的提高,代碼越來越復雜,源文件也越來越多,
對于軟件開發(fā)人員來說,除了保證程序運行的正確性和提高代碼的運行效率之外,規(guī)
范風格的編碼會對軟件的升級、修改、維護帶來極大的方便性,也保證程序員不會陷
入“代碼泥潭”中無法自拔。開發(fā)一個成熟的軟件產(chǎn)品,除了有詳細豐富的開發(fā)文檔
之外,必須在編寫代碼的時候就有條不紊,細致嚴謹。
  以下的編碼規(guī)范包含了程序排版、注釋、命名、可讀性、變量、程序效率、質量
保證、代碼編譯、代碼測試和版本控制等注意事項。

  一、排版:
  1.關鍵詞和操作符之間加適當?shù)目崭瘛?
  2.相對獨立的程序塊與塊之間加空行
  3.較長的語句、表達式等要分成多行書寫。
  4.劃分出的新行要進行適應的縮進,使排版整齊,語句可讀。
  5.長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。
  6.循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適應的劃分。
  7.若函數(shù)或過程中的參數(shù)較長,則要進行適當?shù)膭澐帧?
  8.不允許把多個短語句寫在一行中,即一行只寫一條語句。
  9.函數(shù)或過程的開始、結構的定義及循環(huán)、判斷等語句中的代碼都要采用縮進風格。
  10.C/C++語言是用大括號‘{’和‘}’界定一段程序塊的,編寫程序塊時‘{’和
   ‘}’應各獨占一行并且位于同一列,同時與引用它們的語句左對齊。在函數(shù)體
    的開始、類的定義、結構的定義、枚舉的定義以及if、for、do、while、
    SWITCH、case語句中的程序都要采用如上的縮進方式。

  二、注釋
  1.注釋要簡單明了。
  2.邊寫代碼邊注釋,修改代碼同時修改相應的注釋,以保證注釋與代碼的一致性。
  3.在必要的地方注釋,注釋量要適中。注釋的內容要清楚、明了,含義準確,防止
   注釋二義性。保持注釋與其描述的代碼相鄰,即注釋的就近原則。
  4.對代碼的注釋應放在其上方相鄰位置,不可放在下面。
  5.對數(shù)據(jù)結構的注釋應放在其上方相鄰位置,不可放在下面;對結構中的每個域
   的注釋應放在此域的右方;同一結構中不同域的注釋要對齊。
  6.變量、常量的注釋應放在其上方相鄰位置或右方。
  7.全局變量要有較詳細的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它
   以及存取時注意事項等的說明。
  8.在每個源文件的頭部要有必要的注釋信息,包括:文件名;版本號;作者;生成
   日期;模塊功能描述(如功能、主要算法、內部各部分之間的關系、該文件與其
   它文件關系等);主要函數(shù)或過程清單及本文件歷史修改記錄等。
  9.在每個函數(shù)或過程的前面要有必要的注釋信息,包括:函數(shù)或過程名稱;功能描
   述;輸入、輸出及返回值說明;調用關系及被調用關系說明等。

  三、命名
  1.較短的單詞可通過去掉“元音”形成縮寫;
  2.較長的單詞可取單詞的頭幾發(fā)符的優(yōu)先級,并用括號明確表達式的操作順序,避
   免使用默認優(yōu)先級。
  3.使用匈牙利表示法

  四、可讀性
  1.避免使用不易理解的數(shù)字,用有意義的標識來替代。
  2.不要使用難懂的技巧性很高的語句。
  3.源程序中關系較為緊密的代碼應盡可能相鄰。

  五、變量
  1.去掉沒必要的公共變量。
  2.構造僅有一個模塊或函數(shù)可以修改、創(chuàng)建,而其余有關模塊或函數(shù)只訪問的公共
   變量,防止多個不同模塊或函數(shù)都可以修改、創(chuàng)建同一公共變量的現(xiàn)象。
  3.仔細定義并明確公共變量的含義、作用、取值范圍及公共變量間的關系。
  4.明確公共變量與操作此公共變量的函數(shù)或過程的關系,如訪問、修改及創(chuàng)建等。
  5.當向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦與不合理的值或越界等現(xiàn)象發(fā)生。
  6.防止局部變量與公共變量同名。
  7.仔細設計結構中元素的布局與排列順序,使結構容易理解、節(jié)省占用空間,并減
   少引起誤用現(xiàn)象。
  8.結構的設計要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應用保
   留余地(如預留一些空間等)。
  9.留心具體語言及編譯器處理不同數(shù)據(jù)類型的原則及有關細節(jié)。
  10.嚴禁使用未經(jīng)初始化的變量。聲明變量的同時對變量進行初始化。
  11.編程時,要注意數(shù)據(jù)類型的強制轉換。

  六、函數(shù)、過程
  1.函數(shù)的規(guī)模盡量限制在200行以內。
  2.一個函數(shù)最好僅完成一件功能。
  3.為簡單功能編寫函數(shù)。
  4.函數(shù)的功能應該是可以預測的,也就是只要輸入數(shù)據(jù)相同就應產(chǎn)生同樣的輸出。
  5.盡量不要編寫依賴于其他函數(shù)內部實現(xiàn)的函數(shù)。
  6.避免設計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。
  7.用注釋詳細說明每個參數(shù)的作用、取值范圍及參數(shù)間的關系。
  8.檢查函數(shù)所有參數(shù)輸入的有效性。
  9.檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。
  10.函數(shù)名應準確描述函數(shù)的功能。
  11.避免使用無意義或含義不清的動詞為函數(shù)命名
  12.函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。
  13.明確函數(shù)功能,精確(而不是近似)地實現(xiàn)函數(shù)設計。
  14.減少函數(shù)本身或函數(shù)間的遞歸調用。
  15.編寫可重入函數(shù)時,若使用全局變量,則應通過關中斷、信號量(即P、V操作)
    等手段對其加以保護。

  七、可測性
  1.在編寫代碼之前,應預先設計好程序調試與測試的方法和手段,并設計好各種調
  測開關及相應測試代碼如打印函數(shù)等。
  2.在進行集成測試/系統(tǒng)聯(lián)調之前,要構造好測試環(huán)境、測試項目及測試用例,同時
  仔細分析并優(yōu)化測試用例,以提高測試效率。

  八、程序效率
  1.編程時要經(jīng)常注意代碼的效率。
  2.在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。
  3.不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及可測性造成影
   響。
  4.編程時,要隨時留心代碼效率;優(yōu)化代碼時,要考慮周全。
  5.要仔細地構造或直接用匯編編寫調用頻繁或性能要求極高的函數(shù)。
  6.通過對系統(tǒng)數(shù)據(jù)結構劃分與組織的改進,以及對程序算法的優(yōu)化來提高空間效率。
  7.在多重循環(huán)中,應將最忙的循環(huán)放在最內層。
  8.盡量減少循環(huán)嵌套層次。
  9.避免循環(huán)體內含判斷語句,應將循環(huán)語句置于判斷語句的代碼塊之中。
  10.盡量用乘法或其它方法代替除法,特別是浮點運算中的除法。

  九、質量保證
  1.在軟件設計過程中構筑軟件質量。
  代碼質量保證優(yōu)先原則
  (1)正確性,指程序要實現(xiàn)設計要求的功能。
 。2)穩(wěn)定性、安全性,指程序穩(wěn)定、可靠、安全。
 。3)可測試性,指程序要具有良好的可測試性。
  (4)規(guī)范/可讀性,指程序書寫風格、命名規(guī)則等要符合規(guī)范。
 。5)全局效率,指軟件系統(tǒng)的整體效率。
 。6)局部效率,指某個模塊/子模塊/函數(shù)的本身效率。
  (7)個人表達方式/個人方便性,指個人編程習慣。
  2.只引用屬于自己的存貯空間。
  3.防止引用已經(jīng)釋放的內存空間。
  4.過程/函數(shù)中分配的內存,在過程/函數(shù)退出之前要釋放。
  5.過程/函數(shù)中申請的(為打開文件而使用的)文件句柄,在過程/函數(shù)退出前要關
閉。
  6.防止內存操作越界。
  7.時刻注意表達式是否會上溢、下溢。
  8.認真處理程序所能遇到的各種出錯情況。
  9.系統(tǒng)運行之初,要初始化有關變量及運行環(huán)境,防止未經(jīng)初始化的變量被引用。
  10.系統(tǒng)運行之初,要對加載到系統(tǒng)中的數(shù)據(jù)進行一致性檢查。
  11.嚴禁隨意更改其它模塊或系統(tǒng)的有關設置和配置。
  12.不能隨意改變與其它模塊的接口。
  13.充分了解系統(tǒng)的接口之后,再使用系統(tǒng)提供的功能。
  14.要時刻注意易混淆的操作符。當編完程序后,應從頭至尾檢查一遍這些操作符。
  15.不使用與硬件或操作系統(tǒng)關系很大的語句,而使用建議的標準語句。
  16.建議:使用第三方提供的軟件開發(fā)工具包或控件時,要注意以下幾點:
 。1)充分了解應用接口、使用環(huán)境及使用時注意事項。
 。2)不能過分相信其正確性。
 。3)除非必要,不要使用不熟悉的第三方工具包與控件。

  十、代碼編譯
  1.編寫代碼時要注意隨時保存,并定期備份,防止由于斷電、硬盤損壞等原因造成
   代碼丟失。
  2.同一項目組內,最好使用相同的編輯器,并使用相同的設置選項。
  3.合理地設計軟件系統(tǒng)目錄,方便開發(fā)人員使用。
  4.打開編譯器的所有告警開關對程序進行編譯。
  5.在同一項目組或產(chǎn)品組中,要統(tǒng)一編譯開關選項。
  6.使用工具軟件(如Visual SourceSafe)對代碼版本進行維護。

  十一、代碼測試、維護
  1.單元測試要求至少達到語句覆蓋。
  2.單元測試開始要跟蹤每一條語句,并觀察數(shù)據(jù)流及變量的變化。
  3.清理、整理或優(yōu)化后的代碼要經(jīng)過審查及測試。
  4.代碼版本升級要經(jīng)過嚴格測試。

2樓: >>參與討論
liuli9230

大家都來看看,,對自己有很大的幫助哦.

3樓: >>參與討論
zengfanhe63
謝謝
參與討論
昵稱:
討論內容:
 
 
相關帖子
[分享]單片機系統(tǒng)軟件抗干擾方法
單片機交流學習群
sst29sf040 (flash)當作外部數(shù)據(jù)存儲器使用,應該怎...
[分享]MCS-51單片機實用子程序庫
基于89C51單片機試驗板
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號