Dot_Net_编程规范

本文详细介绍了编程规范中的命名规范,包括命名法、命名对象、命名空间、编码习惯等,同时阐述了命名对象的命名法,如命名法、命名空间、类、成员变量、属性、方法、接口、事件等的命名原则。此外,还涵盖了数据库命名规则、项目与类命名规则、文件与目录结构命名规则等,旨在帮助程序员写出简洁、规范、易读的程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程规范的目的是帮助程序员写出简洁规范易读的程序,但也没必要过分被其所约束!

一.命名规范 

一般规范:

命名应具有描述性、表意性,应该能够告诉读程序的人命名对象存储了什么内容或者提供了什么功能,以提高代码可读性;

命名应避免使用缩写,使用缩写的地方应给出说明;

命名应避免使用系统保留字、关键字;

命名应避免使用下划线等特殊字符;

控件命名采用 控件简写+控件意义 的命名方式;

常见命名法:

1. 匈牙利命名法

该方法最先由一位名叫 “Charles Simonyi” 的微软程序员提出。

匈牙利命名法的主要规范为,通过在变量名之前增加小写字母的符号前缀,以标识变量的属性、类型、作用域等参数,以使程序员操作变量时对变量的类型和其它属性有直观的了解。简单地说,即变量名=属性+类型+对象描述的形式。

示例:m_lpszStr,表示指向以 字符结尾的字符串的长指针成员变量。

该命名法较为繁琐,且借助于强大的IDE前缀已失去意义,所以C#中不推荐使用该命名法。

2. Camel命名法

骆驼命名法,也叫驼峰命名法、驼峰式大小写。其主要规范为,首字母小写,逻辑断点首字母大写。

示例:printEmployeePaychecks(),如代码所示,函数的每一个逻辑断点均用大写字母标识。

与此类似,普通的下划线法为:print_employee_paychecks(),逻辑断点使用下划线 “-” 而非字母大写化。

骆驼式命名法是较为流行的书写方式,具有简洁,阅读性强的特点。

3. Pascal命名法

与骆驼命名法类似,骆驼命名法是首字母小写,而帕斯卡命名法则需要首字母大写。源自 Pascal 语言的命名惯例,也称为大驼峰式命名法。

示例:LoginCheck()string UserName

1.WinForm Control 命名规范

控件类型

控件型简写

标准命名举例

Label

lbl

lblMessage

LinkLabel

llbl

llblToday

Button

btn

btnSave

TextBox

txt

txtName

MainMenu

mmnu

mmnuFile

CheckBox

chk

chkStock

RadioButton

rbtn

rbtnSelected

GroupBox

gbx

gbxMain

PictureBox

pic

picImage

Panel

pnl

pnlBody

DataGrid

dgrd

dgrdView

ListBox

lst

lstProducts

CheckedListBox

clst

clstChecked

ComboBox

cbo

cboMenu

ListView

lvw

lvwBrowser

TreeView

tvw

tvwType

TabControl

tctl

tctlSelected

DateTimePicker

dtp

dtpStartDate

HscrollBar

hsb

hsbImage

VscrollBar

vsb

vsbImage

Timer

tmr

tmrCount

ImageList

ilst

ilstImage

ToolBar

tlb

tlbManage

StatusBar

stb

stbFootPrint

OpenFileDialog

odlg

odlgFile

SaveFileDialog

sdlg

sdlgSave

FoldBrowserDialog

fbdlg

fgdlgBrowser

FontDialog

fdlg

fdlgFoot

ColorDialog

cdlg

cdlgColor

PrintDialog

pdlg

pdlgPrint

2. WebForm Control 命名规范

控件类型

控件简写

标准命名举例

AdRotator

adrt

Example

Button

btn

btnSubmit

Calendar

cal

calMettingDates

CheckBox

chk

chkBlue

CheckBoxList

chkl

chklFavColors

CompareValidator

valc

valcValidAge

CustomValidator

valx

valxDBCheck

DataGrid

dgrd

dgrdTitles

DataList

dlst

dlstTitles

DropDownList

drop

dropCountries

HyperLink

lnk

lnkDetails

Image

img

imgAuntBetty

ImageButton

ibtn

ibtnSubmit

Label

lbl

lblResults

LinkButton

lbtn

lbtnSubmit

ListBox

lst

lstCountries

Panel

pnl

pnlForm2

PlaceHolder

plh

plhFormContents

RadioButton

rad

radFemale

RadioButtonList

radl

radlGender

RangeValidator

valg

valgAge

RegularExpression

vale

valeEmail_Validator

Repeater

rpt

rptQueryResults

RequiredFieldValidator

valr

valrFirstName

Table

tbl

tblCountryCodes

TableCell

tblc

tblcGermany

TableRow

tblr

tblrCountry

TextBox

txt

txtFirstName

ValidationSummary

vals

valsFormErrors

XML

xmlc

xmlcTransformResults

3. ADO.NET 命名规范

数据类型

数据类型简写

标准命名举例

Connection

con

conNorthwind

Command

cmd

cmdReturnProducts

Parameter

parm

parmProductID

DataAdapter

adp

adpProducts

DataReader

reader

readerProducts

DataSet

ds

dsNorthWind

DataTable

dt

dtProduct

DataRow

dr

drRow98

DataColumn

dc

dcProductID

DataRelation

drel

drelMasterDetail

DataView

dv

dvwFilteredProducts

数据类型 

数据类型简写 

标准命名举例 

Array

arr

arrShoppingList

Boolean                        

bln 

blnIsPostBack 

Byte                          

byt 

bytPixelValue 

Char                           

chr 

chrDelimiter 

DateTime                      

dtm 

dtmStartDate 

Decimal 

dec 

decAverageHeight 

Double                          

dbl 

dblSizeofUniverse 

Integer        

int 

intRowCounter 

Long                             

lng 

lngBillGatesIncome 

Object          

obj                 

objReturnValue 

Short 

shr 

shrAverage 

Single 

sng 

sngMaximum 

String 

str

strFirstName 

4. C# 命名规范

命名对象

命名法

说明

命名空间

Pascal

一般规则:CompanyName.TechnologyName,用点号分隔逻辑成分

Pascal

使用名词或名词短语命名,避免使用前缀、带下划线字符

成员变量

Camel

属性

Pascal

名称与对应的成员变量保持一致

方法

Pascal

采用动宾结构,描述出方法的作用

方法参数

Camel

局部变量

Camel

接口

Pascal

使用名词、名词短语或者描述行为的形容词,使用前缀I

事件

Pascal

使用后缀EventHandler,要有之前和之后的时态概念,inged

C# Coding Standard 
一、命名 
1.pascal规则来命名方法和类型
public class TextBox 

public void DataBind() 



2.camel规则来命名局部变量和方法的参数
string userName; 
public AddUser(string userId, byte[] password); 
3.所有的成员变量前加前缀 m_ 
public class Database 

public string m_connectionString; 

4.接口的名称加前缀 I. 
interface ICompare 

int compare(); 

5.自定义的属性以Attribute结尾 
public class AuthorAttribute : Attribute 


6.自定义的异常以Exception结尾 
public class AppException : Exception 


7.方法的命名.一般将其命名为动宾短语
ShowDialog() 
CreateFile() 
GetPath() 
8.代码的缩进.要用Tab,而不要用space. 
9.局部变量的名称要有意义.不要用xyz等等
string userName 
10.所有的成员变量声明在类的顶端,用一个换行把它和方法分开
11.用有意义的名字命名namespace,如:产品名、公司名
12.建议局部变量在最接近使用它时再声明
13.使用某个控件的值时,尽量命名局部变量
14.把引用的系统的namespace和自定义或第三方的分开
15.文件名要能反应类的内容,最好是和类同名,一个文件中一个类
16.目录结构中要反应出namespace的层次
17.大括号"{"要新起一行
public class AuthorAttribute : Attribute 

}

二、编码习惯
1.C#预定义的类名,而不要用别名
string userName; 而不是 System.String userName; 
int number; 而不是 System.Int32; 
2.一行不要超过80个字符
3.尽量不要手工更改机器生成的代码,若必须更改,一定要改成和机器生成的代码风格一样
4.关键的语句(包括声明关键的变量)必须要写注释
5.文字常量和数字常量不要硬编码,应该用常量类或枚举代替
6.不要用goto系列语句
7.不要声明publicprotected的成员变量,应用property. 
8.不要声明publicevent,应用事件访问器
public class Source 

private EventHandler m_NumberChangeEvent; 
public event EventHandler NumberChangeEvent 

add 

m_NumberChangeEvent += value; 

remove 

m_NumberChangeEvent -= value; 



9.类型转换的使用规则
Animal animal = new Dog(); 
Dog dog = animal as Dog; 
if (dog != null) 


10.生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string. 
11.始终使用"{ }"包含if下的语句,即使只有一条语句
12.switch语句一定要有default来处理意外情况
13.尽量不要使用三目运算符 ? : ,而要使用if语句
14.尽量不用使用this引用,除非是要调用类中的另一个Constructor. 
public class Person 

public Person(string name) 


public Person() : this("Jim") 


}

数据库:
   表名:首字母大写+驼峰式命名 eg:Article;UserDept
   表中列名:首字母大写+驼峰式命名 eg:UserId;UnitCost
   存储过程命名:表名_首字母大写+驼峰式命名 eg:Admin_UserRegister

项目名称:
   公认简写:全部大写 eg:DAL;BLL
   其他:首字母大写+驼峰式命名 eg:DBUtility;OracleDAL

类:
   类名:首字母大写+驼峰式命名 eg:PetShop.cs;AssemblyInfo.cs
   私有变量名:_首字母小写+驼峰式命名 eg:_publishTime;_rootCategoryId
   公共属性名:首字母大写+驼峰式命名 eg:Description;PublishTime

函数:
   函数名:首字母大写+驼峰式命名 eg:GetItemByProduct
   参数名:首字母小写+驼峰式命名 eg:userId,itemInfo

自定义的特性和异常分别使用后缀AttributeException

二.代码书写格式规范

使用Tab进行代码缩进(空四格);

把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region#endregion

成员变量声明放在类的顶端;

始终使用"{ }"包含if下的语句,即使只有一条语句;

使用括号清晰地表达算术表达式和逻辑表达式的运算顺序。如将 x=a*b/c*d 写成 x=(a*b/c)*d可避免阅读者误解为x=(a*b)/(c*d)

文件之中不得存在无规则的空行,比如说连续十个空行,方法与方法之间空一行;

在方法内部,逻辑上相对独立的两个语句块要适当空行;

避免过多的循环嵌套和条件嵌套;

尽量提取公共过程、重复操作,进行代码重用;

其它参考:http://blog.youkuaiyun.com/sunningliu/archive/2009/01/04/3704164.aspx

代码注释规范

  .cs文件的注释
   所有.cs文件开头都要加上注释,写明文件创建时间、作者、用途概述等
  例如:

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

//日期:2004.7.19

//作者:XXX

//说明:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

  函数过程注释
  复杂的函数体开头都要加上注释,使用.NET注释规范。
  例如:

/// <summary>

/// 构造函数

/// </summary>

/// <param name='is_xxx1'>示例参数1</param>

/// <param name='is_xxx2'>示例参数2</param>

public UpgradeThread(string is_xxx1, string is_xxx2)

{

//…
}

  常量变量注释
  所有的常量变量,无论是全局还是局部使用的,凡是对代码整体起到关键性做用的都需要加上注释。
  例如:

/// <summary>

/// 当前线程指向的备份文件本地保存路径

/// </summary>

public string StorePath = '';

  代码修改注释
  当开发者维护以前的程序代码时,需要在修改处的开始及结尾,加上自己的注释信息。
  例如:

//BEGIN 2004-7-19 Jayson 修正了XXX问题
略…
//END 2004-7-19 Jayson

MyData 就是一个帕斯卡命名的示例
myData是一个骆驼命名法,它第一个单词的第一个字母小写,后面的单词首字母大写,看起来像一个骆驼
iMyData是一个匈牙利命名法,它的小写的i说明了它的型态,后面的和帕斯卡命名相同,指示了该变量的用途.
变量命名规范:
内联变量 必须一骆驼camel命名法声明:
for example: uName,uPass;
类变量(成员变量同上,但一定要以一个下划线开始!
for example: _mySqlConn
常量命名规范:
带有私有访问修饰的常量必须以骆驼命名法声明,并以一个下划线开始,
for example: private int _SHOW_COUNT=20;
带有公有修饰符.受保护修饰符的常量必须以帕斯卡命名法声明,
for example: protected int COUNT=20;
数组必须以骆驼命名法声明 for example: string[5] nameArray;
string[] nameArray=new string[5];
int[] userAge={20,30,21,22,25,24,22};
结构命名规范:
结构必须以帕斯卡命名法声明,用词或者短语作为声明的首选!
for example: public struct StructName{
//结构体!
}
枚举命名规范:
枚举必须以帕斯卡命名规范命名:
for example: public enum WeekDays{
//结构体
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值