1、 ASP.net/C# 编码规范
1.1 命名规范
以下对本节使用的名词进行说明。
|
Pascal |
所有单词第一个字母大写,其他字母小写。 例如: public void GetUserNameByGuid() |
|
Camel |
除了第一个单词,所有单词第一个字母大写,其他字母小写。 例如: string userName |
|
Hungarian |
对象类型(小写) + 功能名称(大写,可以无此段) + 操作对象(大写)。 例如: <asp:Label ID=”lblUserName” /> |
命名规范的具体要求详见表。
|
项 |
编码形式 |
相关例子 |
注释 |
|
文件 |
Pascal |
DatabaseConnector |
使用名词来描述类 |
|
类 |
Pascal |
DatabaseConnector |
类的名称应该与定义它们的文件的名称匹配 |
|
接口 |
Pascal |
IDatabaseConnector |
接口名称以一个字母 I 开头 |
|
方法 |
Pascal |
CalculateBalance |
使用动词来描述方法 |
|
私有和受保护的实例字段 |
camel |
private float accountBalance |
|
|
公共实例字段 |
Pascal |
CustomerName |
|
|
私有和受保护的类字段 |
camel |
protected static int numberOfAccounts |
|
|
公共类字段 |
Pascal |
public static bool HasGoodCredit |
|
|
static final |
全部大写 |
public static final decimal MINNUMBALANCE = 100 |
|
|
局部变量 |
camel |
string accountNumber = FindAccountByCustomerName(customerName) |
|
|
循环计数 |
全部小写 |
int i =0; while(i <10) {i ++;} |
|
|
参数 |
camel |
GetCurrentBalance(string accountNumber ) |
|
|
属性 |
Pascal |
public string AccountNumber {get {return accountNumber;}} |
|
|
控件 id,name |
Hungarian |
<asp:TextBox ID=”tbInfoTitle ” Name=”tbInfoTitle ”></ asp:TextBox > |
对象类型名缩写见 控件匈牙利命名缩写表 |
|
命名空间 |
Pascal |
namespace DataLayer |
|
|
单元测试方法 |
Pascal |
TestFindAllCustomers |
单元测试名称以单词 Test 开头。 |
|
解决方案 |
Pascal |
NorthWindTrader |
|
|
项目 |
Pascal |
DataLayer |
|
控件匈牙利命名缩写表。
|
标准控件 | |
|
Button |
btn |
|
CheckBox |
chk |
|
CheckedListBox |
ckl |
|
ComboBox |
cmb |
|
DateTimePicker |
dtp |
|
Label |
lbl |
|
LinkLabel |
llb |
|
ListBox |
lst |
|
ListView |
lvw |
|
MaskedTextBox |
mtx |
|
MonthCalendar |
cdr |
|
NotifyIcon |
icn |
|
NumeircUpDown |
nud |
|
PictureBox |
pic |
|
ProgressBar |
prg |
|
RadioButton |
rdo |
|
RichTextBox |
rtx |
|
TextBox |
txt |
|
ToolTip |
tip |
|
TreeView |
tvw |
|
WebBrowser |
wbs |
|
容器控件 | |
|
FlowLayoutPanel |
flp |
|
GroupBox |
grp |
|
Panel |
pnl |
|
SplitContainer |
spl |
|
TabControl |
tab |
|
TableLayoutPanel |
tlp |
|
菜单和工具栏 | |
|
ContextMenuStrip |
cms |
|
MenuStrip |
mns |
|
StatusStrip |
ssr |
|
ToolStrip |
tsr |
|
ToolStripContainer |
tsc |
|
数据 | |
|
DataSet |
dts |
|
DataGridView |
dgv |
|
BindingSource |
bds |
|
BindingNavigator |
bdn |
|
ReportViewer |
rpv |
|
Repeater |
rpt |
|
对话框 | |
|
ColorDialog |
cld |
|
FolderBrowserDialog |
fbd |
|
FontDialog |
fnd |
|
OpenFileDialog |
ofd |
|
SaveFileDialog |
sfd |
|
组件 | |
|
BackgroundWorker |
bgw |
|
DirectoryEntry |
dre |
|
DirectorySearcher |
drs |
|
ErrorProvider |
err |
|
EventLog |
evl |
|
FileSystemWatcher |
fsw |
|
HelpProvider |
hlp |
|
ImageList |
img |
|
MessageQueue |
msq |
|
PerformanceCounter |
pfc |
|
Process |
prc |
|
SerialPort |
spt |
|
ServiceController |
scl |
|
Timer |
tmr |
|
印刷 | |
|
PageSetupDialog |
psd |
|
PrintDialog |
prd |
|
PrintDocument |
pdc |
|
PrintPreviewControl |
prv |
|
PrintPreviewDialog |
ppd |
|
水晶报表 | |
|
CrystalReportViewer |
crv |
|
ReportDocument |
rpd |
|
其他 | |
|
DomainUpDown |
dud |
|
HScrollBar |
hsc |
|
PropertyGrid |
prg |
|
Splitter |
spl |
|
TrackBar |
trb |
|
VScrollBar |
vsc |
1.2 注释规范
1 、函数、属性、类等注释
请使用 /// 三斜线注释,这种注释是基于 XML 的,不仅能导出 XML 制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以 protected , protected Internal , public 声明的定义注释请都以这样命名方法。
|
类型 |
相关例子 |
说明 |
|
文档注释 |
/// <summary> /// This class represents a bank account /// </summary> |
用于文档类和方法 |
|
行末注释 |
int myCount = 0; // Keep track of how many times ... |
用于描述某些含义不太清晰的事物的目的 |
|
单行注释 |
// Here is where we gather account data |
用于描述后续事物或者代码块的目的 |
|
多行注释 |
/* Here is where we gather account data */ |
用于在代码块处进行注释,或者用于描述后续多行代码的目的 |
2 、逻辑点注释
在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除 BUG 。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考要修改的是注释还是程序了 …
1.3 代码可阅读性
1 、注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰。
2 、避免使用不易理解的数字,用有意义的标识来替代(枚举和常量),例如:
if(productType == 0)
…
else if (productType == 1)
…
以上为不合格的做法,以下为推荐使用的方法:
if(productType == ProductType.CD )
…
else if (productType == ProductType.DVD )
…
1.4 格式
空行与空格 :尽管编译器可以忽略空行与空格,但是空行与空格可以将不同逻辑的代码单元分离,从而提高代码的可读性。
在下述几种情况下应该使用一个空行:
l 方法之间
l 声明和语句之间
l 代码的逻辑段之间
l 单行或者多行注释之前
在下述几种情况下应该使用一个空格:
l 带圆括号的关键字之后
l 参数列表的逗号之后
l 数据操作符的前后
l 在for语句中,用于将语句的3个逻辑段分开
以上格式可以在 Visual Studio 中使用 ctrl+k , ctrl+d 自动排版。
1.5 解决方案和项目组织
每个解决方案都应该拥有下述项目:
l 业务项目(business project)仅存放业务项目。
l 数据项目(data project)处理数据库和其他用于检索或者更新数据目的的遗留系统的访问。
l 表示项目(presentiation project)处理使用系统的终端用户所需的所有视图。
l 测试项目(test project)存放应用程序所有的单元测试。
本文档详细介绍了 ASP.NET/C# 开发中的编码规范,包括命名规范、注释规范、代码可读性及格式等方面的要求。通过遵循这些规范,可以提升代码质量并促进团队协作。
629





