程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 軟件編碼規范

軟件編碼規范

編輯:C語言基礎知識

  軟件編碼規范
   前言:
  
       通過建立代碼編寫規范,形成BCB 開發小組編碼約定,提高程序的可靠性、可讀性、可修改性、可維護性、一致性,保證程序代碼的質量,繼續軟件開發成果,充分利用資源。提高程序的可繼續性,使開發人員之間的工作成果可以共享。
  
   軟件編碼要遵循以下原則:
   1.遵循開發流程,在設計的指導下進行代碼編寫。
   2.代碼的編寫以實現設計的功能和性能為目標,要求正確完成設計要求的功能,達到設計的性能。
   3.程序具有良好的程序結構,提高程序的封裝性好,減低程序的耦合程度。
   4.程序可讀性強,易於理解;方便調試和測試,可測試性好。
   5.易於使用和維護;良好的修改性、擴充性;可重用性強/移植性好。
   6.占用資源少,以低代價完成任務。
   7.在不降低程序的可讀性的情況下,盡量提高代碼的執行效率。
  
   本規范的描述主要以 Borland C++ Builder 語言為例
  
   一、    規范:以下對本規范作具體說明。
  
   1:源程序的文件治理:
   a)組織:每個程序文件單元通常都應由 .cpp、.dfm和 .h 等文件組成,並將單元的公共聲明部分放在 .h 文件中。劃分單元主要是以類為依據,原則上每個較大的類都應為一個單獨的單元,但在類較小且多個小類關系密切等情況下也可幾個類共一個單元(建議僅對已經具體測試的較為通用的類采用)。
   b)命名:原程序文件命名采用有意義的格式。例如:對登陸程序來說三個文件的命名應該是這樣,.cpp的是 Login.cpp  .dfm的是Login.dfm  .h的是Login.h
   c)文件結構:每個程序文件由標題、內容和附加說明三部分組成。
     (A)標題:文件最前面的注釋說明,其內容主要包括:程序名,作者,版本信息,簡要說明等,必要時應有更詳盡的說明(將以此部分以空行隔開單獨注釋)。
     (B)內容:為文件源代碼部分基本上按預處理語句、類型定義、變量定義、函數原型、函數實現(僅對 .cpp 文件)的順序。 main 、 winmain ,控件注冊等函數應放在內容部分的最後,類的定義按 private 、 protected 、 pubilic 、 __pubished 的順序,並盡量保持每一部分只有一個,各部分中按數據、函數、屬性、事件的順序。
     (C)附加說明:文件末尾的補充說明,如參考資料等,若內容不多也可放在標題部分的最後。
   舉例說明:
   /*************************************************************
   類:class TimageManipulation
   設計者:lunhongjun (2001/05/09)
   用途:用於圖象處理,實現圖象亮度、對比度、反白、色彩平衡等處理
  
   版本:
       1.0    2001/05/09      完成基本的圖象處理功能設計
               2001/05/10      修改完成一個小Bug.
   *************************************************************/
   class TImageManipulation
   {
   private://define variant
       Graphics::TBitmap * pSourceBitmap;//用於存放未經處理的原始圖像
       Graphics::TBitmap * pManipulatedImage;//用處存放經過處理後的圖象
       //圖像處理過程中的相關參數
       int    iBrightness;          //色彩亮度
       int    iContrast;            //色彩對比度
       int    iRedColorBalance;    //紅色色彩平衡度
       int    iBlueColorBalance;    //藍色色彩平衡度
       int    iGreenColorBalance;  //綠色色彩平衡度
       bool    bRotate;              //字體旋轉度數
  
       bool    bMonochrome;            //是否反白顯示
   private:
       void __fastcall BrightnessImage(void);//調整圖象亮度
       void __fastcall ContrastImage(void);//調整圖象對比度
       void __fastcall DoManipulationImage(void);//圖象處理
       void __fastcall MonochromeImage(void);//圖象反白
       void __fastcall DoColor(void);
       void __fastcall DoFilter(int * flt, int Div);
       void __fastcall RotateImage(void);//調整圖象色彩平衡
  
   public://define property ,method,event,function
       __fastcall TImageManipulation();
   __fastcall ~TImageManipulation();
  
       void __fastcall DoBrightness(int BrightnessIncrement);
       void __fastcall DoContrast(int ContrastIncrement);
       void __fastcall DoMonochrome(void);
       void __fastcall DoChangeColorBalance(int RedBalance,
       int BlueBalance, int GreenBalance);
       void __fastcall SetSourceImage(Classes::TPersistent* Source);
       Graphics::TBitmap * __fastcall GetManipulationImage(void);
       void __fastcall DoBlur(void);
       void __fastcall DoSharp(void);
       void __fastcall DoEmboss(void);
       void __fastcall LoadImageFromFile(AnsiString FileName);
       void __fastcall SaveManipulatedImageAsFile(AnsiString FileName);
       TImageManipulation& operator=(const TImageManipulation & imSource);
       void __fastcall DoRotate(void);
   };
   #endif
  
   2.編輯風格:
  
   (1)縮進
  
   縮進以4個空格為單位。建議在Tools/Editor Options中設置General頁面的Block ident為4,Tab Stop為4,不要選中Use tab character。預處理語句、全局數據、函數原型、標題、附加說明、函數說明、標號等均頂格書寫。語句塊的“{”“}”配對對齊,並與其前一行對齊,語句塊類的語句縮進建議每個“{”“}”單獨占一行。
  
   (2)空格
  
   變量、類、常量數據和函數在其類型,修飾(如 __fastcall 等)名稱之間適當空格並據情況對齊。要害字原則上空一格,如: if ( ... ) 等,運算符的空格規定如下:“::”、“->”、“[”、“]”、“++”、“--”、“~”、“!”、“+”、“-”(指正負號),“&”(取址或引用)、“*”(指使用指針時)等幾個運算符兩邊不加空格(其中單目運算符系指與操作數相連的一邊),其它運算符(包括大多數二目運算符和三目運算符“?:”兩邊均加一空格,“(”、“)”運算符在其內側空一格,在作函數定義時還可據情況多空或不空格來對齊,但在函數實現時可以不用。“,”運算符只在其後空一格,需對齊時也可不空或多空格,“sizeof”運算符建議也在其後空一格,不論是否有括號,對語句行後加的注釋應用適當空格與語句隔開並盡可能對齊。
  
   (3)對齊
  
   原則上關系密切的行應對齊,對齊包括類型、修飾、名稱、參數等各部分對齊。另每一行的長度不應超過屏幕太多,必要時適當換行,換行時盡可能在“,”處或運算符處,換行後最好以運算符打頭,並且以下各行均以該語句首行縮進,但該語句仍以首行的縮進為准,即如其下一行為“{”應與首行對齊。
   變量定義最好通過添加空格形成對齊,同一類型的變量最好放在一起。如下例所示:
   int        Value;
  
   int        Result;
   int        Length;
   DWord      Size;
   DWORD      BufSize;
   char *      pBuf;
   void *      pOutputBuf;
   LPCSTR *    pPath;
  
   (4)空行
  
   程序文件結構各部分之間空兩行,若不必要也可只空一行,各函數實現之間一般空兩行,由於BCB會自動產生一行“//------”做分隔,另因每個函數還要有函數說明注釋,故通常只需空一行或不空,但對於沒有函數說明的
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved