C#OOP之十六 开发常用之各种规范参考

附录一.Windows控件缩写规范

数据类型

数据类型简写

标准命名

Lable

Lbl

LblMessage

LinkLable

llbl

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.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:[email protected]

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

1.2推荐采用.NET形式书写头部注释。

如:

///<summary>

///文件名:CarPrint.cs

///作者:赵建磊

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

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

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

///Email:[email protected]

///</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      模块编写应该有完善的测试方面的考虑。   

你可能感兴趣的:(C#,标准,命名规范,C#规范)