如何編寫代碼才能使得效率高

來源:互聯網
上載者:User

一、排版:
  1.關鍵詞和操作符之間加適當的空格。
  2.相對獨立的程式塊與塊之間加空行
  3.較長的語句、運算式等要分成多行書寫。
  4.劃分出的新行要進行適應的縮排,使排版整齊,語句可讀。
  5.長運算式要在低優先順序操作符處劃分新行,操作符放在新行之首。
  6.迴圈、判斷等語句中若有較長的運算式或語句,則要進行適應的劃分。
  7.若函數或過程中的參數較長,則要進行適當的劃分。
  8.不允許把多個短語句寫在一行中,即一行唯寫一條語句。
  9.函數或過程的開始、結構的定義及迴圈、判斷等語句中的代碼都要採用縮排風格。
  10.C/C++語言是用大括弧‘{’和‘}’界定一段程式塊的,編寫程式塊時‘{’和
   ‘}’應各獨佔一行並且位於同一列,同時與引用它們的語句靠左對齊。在函數體
    的開始、類的定義、結構的定義、枚舉的定義以及if、for、do、while、
    switch、case語句中的程式都要採用如上的縮排方式。

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

三、命名
  1.較短的單詞可通過去掉“母音”形成縮寫;
  2.較長的單詞可取單詞的頭幾發符的優先順序,並用括弧明確運算式的操作順序,避
   免使用預設優先順序。
  3.使用匈牙利標記法

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

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

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

七、可測性
  1.在編寫代碼之前,應預先設計好程式調試與測試的方法和手段,並設計好各種調
  測開關及相應測試代碼如列印函數等。
  2.在進行整合測試/系統聯調之前,要構造好測試環境、測試專案及測試案例,同時
  仔細分析並最佳化測試案例,以提高測試效率。

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

九、品質保證
  1.在軟體設計過程中構築軟體品質。
  代碼品質保證優先原則
  (1)正確性,指程式要實現設計要求的功能。
  (2)穩定性、安全性,指程式穩定、可靠、安全。
  (3)可測試性,指程式要具有良好的可測試性。
  (4)規範/可讀性,指程式書寫風格、命名規則等要符合規範。
  (5)全域效率,指軟體系統的整體效率。
  (6)局部效率,指某個模組/子模組/函數的本身效率。
  (7)個人表達方式/個人方便性,指個人編程習慣。
  2.只引用屬於自己的存貯空間。
  3.防止引用已經釋放的記憶體空間。
  4.過程/函數中分配的記憶體,在過程/函數退出之前要釋放。
  5.過程/函數中申請的(為開啟檔案而使用的)檔案控制代碼,在過程/函數退出前要關閉。
  6.防止記憶體操作越界。
  7.時刻注意運算式是否會上溢、下溢。
  8.認真處理常式所能遇到的各種出錯情況。
  9.系統運行之初,要初始化有關變數及運行環境,防止未經初始化的變數被引用。
  10.系統運行之初,要對載入到系統中的資料進行一致性檢查。
  11.嚴禁隨意更改其它模組或系統的有關設定和配置。
  12.不能隨意改變與其它模組的介面。
  13.充分瞭解系統的介面之後,再使用系統提供的功能。
  14.要時刻注意易混淆的操作符。當編完程式後,應從頭至尾檢查一遍這些操作符。
  15.不使用與硬體或作業系統關係很大的語句,而使用建議的標準語句。
  16.建議:使用第三方提供的軟體開發套件或控制項時,要注意以下幾點:
  (1)充分瞭解應用介面、使用環境及使用時注意事項。
  (2)不能過分相信其正確性。
  (3)除非必要,不要使用不熟悉的第三方工具包與控制項。

十、代碼編譯
  1.編寫代碼時要注意隨時儲存,並定期備份,防止由於斷電、硬碟損壞等原因造成
   代碼丟失。
  2.同一項目組內,最好使用相同的編輯器,並使用相同的設定選項。
  3.合理地設計軟體系統目錄,方便開發人員使用。
  4.開啟編譯器的所有警示開關對程式進行編譯。
  5.在同一項目組或產品組中,要統一編譯開關選項。
  6.使用工具軟體(如Visual SourceSafe)對代碼版本進行維護。

十一、代碼測試、維護
  1.單元測試要求至少達到語句覆蓋。
  2.單元測試開始要跟蹤每一條語句,並觀察資料流及變數的變化。
  3.清理、整理或最佳化後的代碼要經過審查及測試。
  4.代碼版本升級要經過嚴格測試。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.