ASP.net/C#编码规范
2010年06月03日
以下对本节使用的名词进行说明。 Pascal 所有单词第一个字母大写,其他字母小写。
例如:public void GetUserNameByGuid() Camel 除了第一个单词,所有单词第一个字母大写,其他字母小写。
例如:string userName Hungarian 对象类型(小写)+功能名称(大写,可以无此段)+操作对象(大写)。
例如: 命名规范的具体要求详见表。 项 编码形式 相关例子 注释 文件 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 对象类型名缩写见控件匈牙利命名缩写表 命名空间 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、函数、属性、类等注释
请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释请都以这样命名方法。 类型 相关例子 说明 文档注释 /// /// This class represents a bank account /// 用于文档类和方法 行末注释 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、注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰。
2、避免使用不易理解的数字,用有意义的标识来替代(枚举和常量),例如:
if(productType == 0)
…
else if (productType == 1)
…
以上为不合格的做法,以下为推荐使用的方法:
if(productType == ProductType.CD )
…
else if (productType == ProductType.DVD )
… 空行与空格:尽管编译器可以忽略空行与空格,但是空行与空格可以将不同逻辑的代码单元分离,从而提高代码的可读性。
在下述几种情况下应该使用一个空行: l 方法之间
l 声明和语句之间
l 代码的逻辑段之间
l 单行或者多行注释之前 在下述几种情况下应该使用一个空格: l 带圆括号的关键字之后
l 参数列表的逗号之后
l 数据操作符的前后
l 在for语句中,用于将语句的3个逻辑段分开 以上格式可以在Visual Studio中使用ctrl+k,ctrl+d自动排版。 每个解决方案都应该拥有下述项目: l 业务项目(business project)仅存放业务项目。
l 数据项目(data project)处理数据库和其他用于检索或者更新数据目的的遗留系统的访问。
l 表示项目(presentiation project)处理使用系统的终端用户所需的所有视图。
l 测试项目(test project)存放应用程序所有的单元测试。
2010年06月03日
以下对本节使用的名词进行说明。 Pascal 所有单词第一个字母大写,其他字母小写。
例如:public void GetUserNameByGuid() Camel 除了第一个单词,所有单词第一个字母大写,其他字母小写。
例如:string userName Hungarian 对象类型(小写)+功能名称(大写,可以无此段)+操作对象(大写)。
例如: 命名规范的具体要求详见表。 项 编码形式 相关例子 注释 文件 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 对象类型名缩写见控件匈牙利命名缩写表 命名空间 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、函数、属性、类等注释
请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释请都以这样命名方法。 类型 相关例子 说明 文档注释 /// /// This class represents a bank account /// 用于文档类和方法 行末注释 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、注意运算符的优先级,我们应该尽量使用括号明确表达式的操作顺序,避免使用默认优先级,给我们以及维护人带来困扰。
2、避免使用不易理解的数字,用有意义的标识来替代(枚举和常量),例如:
if(productType == 0)
…
else if (productType == 1)
…
以上为不合格的做法,以下为推荐使用的方法:
if(productType == ProductType.CD )
…
else if (productType == ProductType.DVD )
… 空行与空格:尽管编译器可以忽略空行与空格,但是空行与空格可以将不同逻辑的代码单元分离,从而提高代码的可读性。
在下述几种情况下应该使用一个空行: l 方法之间
l 声明和语句之间
l 代码的逻辑段之间
l 单行或者多行注释之前 在下述几种情况下应该使用一个空格: l 带圆括号的关键字之后
l 参数列表的逗号之后
l 数据操作符的前后
l 在for语句中,用于将语句的3个逻辑段分开 以上格式可以在Visual Studio中使用ctrl+k,ctrl+d自动排版。 每个解决方案都应该拥有下述项目: l 业务项目(business project)仅存放业务项目。
l 数据项目(data project)处理数据库和其他用于检索或者更新数据目的的遗留系统的访问。
l 表示项目(presentiation project)处理使用系统的终端用户所需的所有视图。
l 测试项目(test project)存放应用程序所有的单元测试。