C#OOP之十六 開發經常使用之各類規範參考

附錄一.Windows控件縮寫規範程序員

數據類型數據庫

數據類型簡寫設計模式

標準命名網絡

Lable架構

Lbl測試

LblMessagethis

LinkLable編碼

llblspa

LlblToday設計

Button

btn

Btnsave

TextBox

Txt

TxtName

MainMenu

mmnu

MnnuFile

CheckBox

chk

chkStock

RadioButton

rbtn

RbtnSelected

GroupBox

gbx

GbxMain

pictureBox

pic

PicImage

Panel

pnl

PnlBod

DataGrid

dgrd

DgrdView

ListBox

cbo

CboMenu

TreeView

tvw

Tvw

TabControl

tctl

tctlSelected

DataTimePicker

dtp

dtpStartData

HscrollBar

hsb

hsbImage

VscrollBar

vxb

vsbImage

Timer

tmr

tmrCount

ImageList

ilst

ilstImage

ToolBar

Tlb

tlbManage

StatusBar

stb

stbFootPrint

OpenFileDialog

odlg

odlgFile

SaveFileDialog

sdlg

sdlgSave

FoldBrowserDialog

fbdlg

fgdlgBrwser

FontDialog

fdlg

fdlgFoot

ColorDialog

cdlg

cdlgColr

PrintDialog

pdlg

pdlgPrints

Web控件縮寫規範

 

                           

 

 

數據類型

數據類型簡寫

標準命名

AdRotator

Asrt

Example

Button

Btn

BtnSubimit

Calendar

Cal

calMettingDatas

CheckBox

Chk

ChkBlue

CheckBoxList

Chkl

chkFavClors

CompareValidator

Valx

valxDBCheck

DataGrid

Dgrd

DgrdTitles

DataList

Dlst

DlstTitle

DropdownList

Drop

dropCountries

HyperLink

Lnk

LnkDetail

Image

img

ImgAuntBetty

ImageButton

ibtn

IbtnSubmit

Label

Lbl

LblResult

LinkButton

lbtn

LbtnSubmit

ListBox

Lst

LstCountries

Panel

pnl

pnlForm2

PlaceHolder

Plh

PlhFormContens

RadioButton

Rad

RadFemale

RadioButtonList

radl

RadlGer

RangValidator

valg

ValgAge

Regular Expression

vale

valeEmail  Vaildator

Repeater

Rpt

ValrFirstName

Table

Tbl

TblCountryCodes

TableCell

tblc

TblcGermany

TableRow

tblr

TblrCountry

TextBox

Txt

TxtFirstName

ValidationSummary

vals

valsFormError

XML

xmlc

XmlcTranformResults

數據庫對象縮寫規範

 

 

 

 

 

數據類型

數據類型簡寫

標準命名舉例

Connection

Con

ConNorthwind

Command

Cmd

CmdReturnProducts

Parameter

Parm

ParmProductID

DataAdapter

Dap

DapProducts

DataReater

Dtr

DtrProducts

DataSet

Ds

DsNorthWind

DataTable

Dt

DtProduct

DataRow

Drow

DrowRow

DataColumn

Dcol

DcolProductID

DataRelation

drl

DrlMasterDetail

DataView

dvw

DvwFilteredProducts

 

 

 

數據類型寫規範

 

 

數據類型

數據類型簡寫

標準命名舉例

Bool

b/is

IsVisable

Float

F

FPrice

Double

D

DPrice

Unit

U

Uage

Int

I

iNumber

Char

Ch

ChCode

Byte

Bt

BtImages

String

Str

StrName

Struct

St

stStudents

Windows

Wnd

WndMain

AttayList

Lst

LstStudents

Array

Arr

ArrStudents

Hashtable

Ht

HtStudents

經常使用類型命名規範總結

 

 

 

 

 

類型

命名規範

注意事項

事例

類或結構

Pascal

首字符大寫

HttpContext

接口

Pascal

加前綴 I

IdataAdapter

枚舉名

Pascal

首字符大寫

CommandType

枚舉值

Pascal

首字符大寫

CommandType.Text

事件

Pascal

首字符大寫

SelectedINdexChanged

自定義異常

Pascal

加後綴Exception

ArgumentException

公共字段

Pascal

首字符大寫

Int32.MaxValue

方法

Pascal

首字符大寫

ToString

命名空間

Pascal

首字符大寫

System.Xml

屬性

Pascal

首字符大寫

BackColor

保護或私有字段

Camel

首字符小寫

MyVariable

參數

Camel

首字符小寫

cmdText

 

附錄二.命名規範

一.類

1.1..使用Pascal規則命名類名,即首字母要大些.。

如:

Class person

ClassBmpFileStream

1.2.使用可以反映類功能的名詞或名詞短語命名類。

   如:

public classFileStream

public class Button

public classstring

1.3.不要使用「_」,」C」,」I」等特定含義前綴。

   如:

class –ManagerSystem

classCManagerSystem

classImanagerSystem

1.4.自定義異常類應以Exception結尾。

  如:

   Public class EmailException:Exception

   {

   //類體

}

1.5.文件名要能反映類的內容,最好是和類同名。

2、類字段

 2.1.用camel規則來命名類成員變量名稱,即首單詞(或單詞縮寫)小寫。

    如:

class Student

{

string stuName;

string stuNo;

string password;

}

2.2.類字段變量名前加」_」前綴。

如:

Class student

{

String_stuName;

String _stuNo;

}

 2.3堅定在普通變量前加」m_」前綴(這是VC老命名規則)。

如:

Class Student

{

    sting m_stuName;

   sting m_stuNo;

}

三. 方法

  3.1方法採用Pascal規則,第一個字符要大寫。

如:

  public void DoubleVaule(){…}

  public void Show(){…}

3.2方法名應使用動詞或動詞短語。

如:

  void RemoveAll(){…}

  void GetCharArray(){…}

  void Invoke()

3.3類中訪問修飾符或者功能相同的方法應該放在一塊兒,且公共或實現接口的方法在前。

 如:

Class Test

{

    public void Invoke(){…}

    public void Insert(){…}

    private void RemoveAll(){…}

    private void GetCharArray(){…}

}   

四.屬性

 4.1使用名詞定義屬性,屬性使用Pascal規則,首字符大寫。

如: 

 public class Book

     {

        public Color BookName

         {

   //屬性代碼

}

4.2屬性和相應字段名稱要關聯,可使用」重構」菜單來生成屬性.

   如:

      publicclass Book

{

private string bookName;

public Color BookName

{

                     Get{returnbookName;}

}

}

五.參數

5.1參數採用camel規則命名,首字符小寫。

     如:

       String Format(string format,object[] args){…}

5.2使用描述性參數名稱,參數名稱應當具備足夠的說明性。

5.3不要給參數加匈牙利類型表示法的前綴。

    以下面是不合理的:

             voidInsert(string sName,string strAddress)

應該爲:

            void Insert(stringname,string address)

5.4檢查方法全部輸入參數的有效性。

六.常量

6.1只讀常量使用Pascal命名規則,即首字母大寫。

如:

class Calendar

{

          public readonlyColor RedColor;

          public constTuesday;

}

6.2枚舉命名使用Pascal規則命名,枚舉成員本質屬於常量,命名規則同上。

 如:

     enum  CarColor { Red , Blue , Yellow }

6.3枚舉值從小到大順序定義。

如:

 enumCarColor

{

          Red = 1;

          Blue= 2;

          Yellow = 3;

}

6.4靜態字段或屬性採用Pascal規則,首字符大寫。

       public class Component:IComponent

       {

        static string typeName;

        public static string TypeName{get;set}

}

七.接口

7.1接口定義使用Pascal規則,且必須以大寫」I」開頭。

     public interfaceIDatePort

     public interfaceIFormatable

7.2接口名稱要有意義,中間不要有下劃線」_」等字符串。

    如:  

     interface I_Date_Port 是不合適的。

7.3若是類實現了接口,名稱儘可能和接口相同,只是省掉」I」字符。

 public interface IComponent

{

  //接口定義

}

public classComponent: IComponent

{

      //類實現

}

八.事件

8.1委託名稱採用Pascal規則,第一個字符大寫。

    如:

      public delegate voidCountHandler(int x,int y);

8.2定義事件的委託要使用EventHandler後綴,且包括sender和e兩個參數。

如:

Delegate voidMouseEventHandler(object sender,MouseEventArgs e) ;

8.3事件用到的參數類,名稱要帶EventArgs後綴。

如:

public classMouseEventArgs:EventArgs

{

             //參數類內容

}

九.命名空間

9.1命名空間名稱採用Pascal規則,首字符大寫。

如:

NamespaceHairCompany

{

  //命名空間內容

}

9.3命名空間名稱儘可能反映其內容所提供的總體功能。

如:

Microsoft.Media

Microsoft.Media.Design

 

 

 

附錄三.註釋規範

一.文件頭部註釋

1.1 文件都包含文件頭,要說明文件名、做者、建立時間、變動記錄等。

 如:

/***********************

*文件名:CarPrint.cs

*做者:趙建磊

*建立日期:2010-05-23

*描述:完成打印功能

*修改日期:2009-11-23

*Email:perrymail@126.com

***********************/

1.2推薦採用.NET形式書寫頭部註釋。

如:

///<summary>

///文件名:CarPrint.cs

///做者:趙建磊

///建立日期:2010-05-23

///描述:完成打印功能

///修改日期:2009-4-23

///Email:perrymail@126.com

///</summary>

二.類及其成員註釋

2.1對方法和類使用」///」三斜線註釋。

如:

///<summary>

///功能:對此類功能的描述

///做者:做者中文名

///日期:編寫日期等

///描述:完成打印功能

///修改日期:2009-11-23

///</summary>

ClassBookSystem

{

    ///<summary>

///圖書詳細信息查詢

///</summary>

Public DataSetSelectBooks(int id)

{

}

}

2.2.代碼行文註釋採用」//」和」/**/」進行,應量說明問題。

 PublicDataSet SelectBooks(int id /*書籍ID*/)

{

  DataSet dsBook;//註釋數據集

}

2.3添加的註釋必須可以說明此語句塊的做用和實現手段。

2.4全部的註釋都應該用英文或者中文,同一段註釋不要混用兩種語言。

2.5代碼變動須要將舊代碼註釋,而且說說明變動緣由、變動做者和變動時間。

 

 

 

 

 

 

 

 

 

 

 

附錄四.行文規範

 

                             不可按外貌判定是非,要按公平判定是非。

                                                    -----《新約》(john)

版面

儘管在定義代碼樣式的格式時,你能夠作出不少個性化的選擇,但全部這些都是關於審美的。從定義上看,樣式沒有任何句法或語義上的意義;編譯器會忽略樣式。然而源代碼的真正讀者是其餘程序員。編寫代碼時要爲他們的利益着想。

u   K&R括號風格

K&R風格是最先爲人們所喜好的風格,它是由C語言之父Kernighan和Ritchie在他們的《C程序設計語言》一書中確立的。因爲這個緣由,這種風格常被認爲是最初和最好的風格。它的誕生來源於在一個小屏幕中顯示儘量多的信息的需求。

int k_and_r( ) {

  int a = 0, b = 0;

  while (a != 10) {

              b++;

              a++;

}

return b;

}

優勢

l       佔用空間較小,因此在一屏上一次能夠顯示更多的代碼

l       後括號與相對應的語句縮進相同,因此能夠很容易地找到括號所終止的構造

缺點

l       前括號和後括號上下不對齊,因此視覺上不易匹配

l       若是頁面右側的前括號丟失,將很難發現

l       代碼語句看上去擠做一團

u   Allman括號風格

Allman括號風格是一種空間上更開闊的方法。這也是C#語言在國內最流行的風格。

Int exdented( )

{

      Int a = 0,b = 0;

      While (a != 10)

{

             b++;

             a++;

}

Return b;

}

優勢

l       格式清晰整潔

l       每一個代碼塊都更易於區分

缺點

l       佔用的豎向空間更多

l       若是你有不少只包含一條語句的代碼塊,那麼會顯得很浪費空間

l       對某些黑客而言這太像Pascal語句了

 

縮寫規範

l       標識符應當直觀可望文知意,不提倡使用任何縮寫。

l       字符串變量推薦以「str」或「s」開頭,採用string.Empty來初始化。

    如:

    String strName = string.Empty;

l       普通對象能夠以「obj」開頭。

    如:

    Book objBook=new Book( );

l       縮寫可自行定義,通常取單詞的前/後字符組成,以含義直觀爲準則。

合理名稱如:

Label lblName;

Lable lbName;

Color bkColor;

ColorbackgroudColor;

Color bgColor;

l       通常狀況下不要讓縮寫破壞標識符的含義。

如:

Public StudentGetStudent( )

排版

l       每行語句至少佔一行,若是語句過(超過一屏),則語句斷爲兩行顯示。

如:

Public void Insert(string bookName,

String bokID,

String bookDetail,

Int bookNumber

);

下列定義不合理:

frmMain.Width = 0;frmMain.Height=0;

應爲:

frmMain.Width = 0;

frmMain.Height=0;

l       把類似的內容放在一塊兒,好比字段、屬性、方法、事件等,使用「#region」命令分組。

如:

Class Book

{

       #region構造方法

              PublicBook(string name) {…}

       #endregion

       #region公共方法

              PublicBook GetBookByName(string name) {…}

       #endregion

       #region屬性

              Publicstring Name{…}

       #endregion

       #region私有字段

              Privatestring name;

#endregion

}

l       多個程序元素進行對等操做時,操做符以前、以後或者先後要加空格。

如:

If (!ValidNi(ni))

{

       //程序代碼

}

nRepssnInd = SsnData[index].nRepssnIndex;

nRepssnNi = SsnData[index].ni;

l       每一個方法的源程序行數原則上應該少於200行。

l       語句嵌套層次不得超過3層。

l       避免相同的代碼段在多個地方出現。

語句結構

l       若是使用了異常結構,必定要處理異常,通常是要寫日誌文件。

如:

try

{

      //異常監控代碼

}

Catch(Exception e)

{

      Log.WriteLine(e.Messge);

}

l       分支語句不該該使用複雜長條件。

如:

If(txtName ==null || txtName == string.Empty)

{

      //處理代碼

}

應該將長條件封裝成方法:

if(txtNameEnable( )) {…}

switch語句,case後面必須接break(這一點C#已經強行限制)。

l       禁止使用goto語句進行跳轉。

l       行文中嚴禁出現「魔數」,特定含義的常數必須定義成枚舉或常量。

如:

if( objCar.Type==1) objCar.Run( );

應爲:

if(objCar.Type==Cars.BMP)objCar.Run( );

l       不一樣類型的操做符混合使用時,使用括號給出優先級。

如:

if( year % 4 == 0|| year % 100 != 0 && year % 400 == 0)

應爲:

If((year % 4) == 0 ||((year % 100) != 0 && (year % 400) == 0 ))

l       不容許使用複雜的操做符組合。

如:

maxVal = ((a>b ? a:b) > ? (a>b ? a : b) : c);

應該爲:

temp = (a>b ? a : b);

maxVal = ( iTemp > b ? iTemp : b);

l       循環、判斷語句的程序塊部分用花括號括起來,即便只有一條語句。

如:

if(condition)

     flag = true;

推薦改成:

if(condition )

{

     flag = true;

}

l       在switch語句中老是要有default子句,建議使用斷言。

CarType type = GetType( );

Switch (type)

{

     case CarType.GMC:

            return new GMCCar();

            break;

     case CarType.BMW:

            return new BMWCar();

            break;

     default:

            Debug.Assert(false);

            break:

}

l       每一個類和方法完成單一的功能,不設計多用途面面俱到的類和方法。

l       嚴禁使用未經初始化的變量,變量一般使用構造方法來初始化。

大小寫

l       不要建立名稱相同,但大小寫區別的任何元素。

如:

Void MyFunction(string a, string A)

int Color {get, set}

int CoLor{get,set}

l       應當大寫僅有兩個字符的縮寫。

如:

string stuID;

l       不要把易混淆的數字和字母放在一塊兒。

如:

string r = (lo == 10) ? (I1 == 11) : (lol != 101);

l       使用英文命名標識符。

l       不容許變量名、類名、屬性名、方法名等與系統標識符重名。

SQL編碼規範

l       SQL語句所有大寫。

如:

SELECT psnNameFROM person

CREATE PROC p_Selectproc

l        對較複雜的SQL語句加上註釋,說明其功能。

l        鏈接符OR、IN、AND、以及=、<=、>=等先後加上一個空格。

l        使用明確的列代替SELECT*。

如:

SELECT  A.ID, A.NAME, B.ID, B.NAME

FROM  CLASS A, PERSON B

WHERE  A.ID = B.ID

AND A.GRADE = ‘5’

軟件架構

l        數據庫中每一張表對應一個實體類/所據傳輸對象(DTO)。

l        實體類名稱使用表名,也可帶有Dto後綴。

如:

classpersonDto

{

    Public String Nme

    {

    get{return name;}

    get{this.name = value;}

}

}

l        三層架構應當合理使用,不該生搬硬套。

三層架構元素推薦後綴:

數據傳輸對象 XxxxDto

DAO工廠    XxxDAOFactory

DAO接口    IXxxxDAO

服務接口     IXxxxService

DAO的數據庫實現  XxxxDAOOracle/XxxxDAOInfomix

業務邏輯     XxxxManger

系統

l        在國內不要隨便使用設計模式等代碼模式,由於並不流行。

l        系統輸入、資源操做、(如內存分配、文件及目錄操做)、網絡操做(如通訊、調用等)、任務之間的操做(如通訊、調用等)時必須進行錯誤、超時或異常處理。

l      模塊編寫應該有完善的測試方面的考慮。   

相關文章
相關標籤/搜索