<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 程序的書寫規(guī)則(程序的編碼規(guī)范)

          程序的書寫規(guī)則(程序的編碼規(guī)范)

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          隨著軟件產(chǎn)品的功能增加和版本的提高,代碼越來越復(fù)雜,源文件也越來越多,
          對(duì)于軟件開發(fā)人員來說,除了保證程序運(yùn)行的正確性和提高代碼的 運(yùn)行效率之外,規(guī)
          范風(fēng)格的編碼會(huì)對(duì)軟件的升級(jí)、修改、維護(hù)帶來極大的方便性,也保證程序員不會(huì)陷
          入“代碼泥潭”中無法自拔。開發(fā)一個(gè) 成熟的軟件產(chǎn)品,除了有詳細(xì)豐富的開發(fā)文檔
          之外,必須在編寫代碼的時(shí)候就有條不紊,細(xì)致嚴(yán)謹(jǐn)。
            以下的編碼規(guī)范包含了程序排版、注 釋、命名、可讀性、變量、程序效率、質(zhì)量
          保證、代碼編譯、代碼測(cè)試和版本控制等注意事項(xiàng)。
            一、排版:
            1.關(guān)鍵詞和 操作符之間加適當(dāng)?shù)目崭瘛?br />  2.相對(duì)獨(dú)立的程序塊與塊之間加空行
            3.較長(zhǎng)的語句、表達(dá)式等要分成多行書寫。
            4. 劃分出的新行要進(jìn)行適應(yīng)的縮進(jìn),使排版整齊,語句可讀。
            5.長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首。
             6.循環(huán)、判斷等語句中若有較長(zhǎng)的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分。
            7.若函數(shù)或過程中的參數(shù)較長(zhǎng),則要進(jìn)行適當(dāng)?shù)膭澐帧?br />   8.不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句。
            9.函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格。
            10.C/C++語言是用大括號(hào)‘{’和‘}’界定一段程序塊的,編寫程序塊時(shí)‘{’和
             ‘}’應(yīng)各獨(dú)占一行并且位于同一 列,同時(shí)與引用它們的語句左對(duì)齊。在函數(shù)體
              的開始、類的定義、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、
               switch、case語句中的程序都要采用如上的縮進(jìn)方式。

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

          本文引用地址:http://www.ex-cimer.com/article/201611/316154.htm

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

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

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

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

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

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

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

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

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


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();