C#编码规范完整资料doc.docx

上传人:b****3 文档编号:11764762 上传时间:2023-06-02 格式:DOCX 页数:18 大小:21.98KB
下载 相关 举报
C#编码规范完整资料doc.docx_第1页
第1页 / 共18页
C#编码规范完整资料doc.docx_第2页
第2页 / 共18页
C#编码规范完整资料doc.docx_第3页
第3页 / 共18页
C#编码规范完整资料doc.docx_第4页
第4页 / 共18页
C#编码规范完整资料doc.docx_第5页
第5页 / 共18页
C#编码规范完整资料doc.docx_第6页
第6页 / 共18页
C#编码规范完整资料doc.docx_第7页
第7页 / 共18页
C#编码规范完整资料doc.docx_第8页
第8页 / 共18页
C#编码规范完整资料doc.docx_第9页
第9页 / 共18页
C#编码规范完整资料doc.docx_第10页
第10页 / 共18页
C#编码规范完整资料doc.docx_第11页
第11页 / 共18页
C#编码规范完整资料doc.docx_第12页
第12页 / 共18页
C#编码规范完整资料doc.docx_第13页
第13页 / 共18页
C#编码规范完整资料doc.docx_第14页
第14页 / 共18页
C#编码规范完整资料doc.docx_第15页
第15页 / 共18页
C#编码规范完整资料doc.docx_第16页
第16页 / 共18页
C#编码规范完整资料doc.docx_第17页
第17页 / 共18页
C#编码规范完整资料doc.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C#编码规范完整资料doc.docx

《C#编码规范完整资料doc.docx》由会员分享,可在线阅读,更多相关《C#编码规范完整资料doc.docx(18页珍藏版)》请在冰点文库上搜索。

C#编码规范完整资料doc.docx

C#编码规范完整资料doc

【最新整理,下载后即可编辑】

1程序结构

所有源代码的结构均采用以下顺序布局,对于没有的部分可以省略,便于阅读代码。

//==============================================================================================

#regionConstant

#endregionConstant

//----------------------------------------------------------------------------------------------

#regionMembers

#endregionMembers

//----------------------------------------------------------------------------------------------

#regionDefaults

#endregionDefaults

//----------------------------------------------------------------------------------------------

#regionProperties

#endregionProperties

//==============================================================================================

#regionConstructors

#endregionConstructors

//----------------------------------------------------------------------------------------------

#regionInterfaceMethods

#endregionInterfaceMethods

//----------------------------------------------------------------------------------------------

#regionStaticMethods

#endregionStaticMethods

//----------------------------------------------------------------------------------------------

#regionOverrideMethods

#endregionOverrideMethods

//----------------------------------------------------------------------------------------------

#regionPrivateMethods

#endregionPrivateMethods

//----------------------------------------------------------------------------------------------

#regionProtectedMethods

#endregionProtectedMethods

//----------------------------------------------------------------------------------------------

#regionPublicMethods

#endregionPublicMethods

//==============================================================================================

#regionEvents

#endregionEvents

//==============================================================================================

2命名规则和风格

⑴类、方法、常量采用Pascal风格命名

publicclassSomeClass

{

constintDefaultSize=100;

publicSomeMethod()

{

}

}

⑵成员变量采用Camel风格命名,但前面加一个底划线

publicclassSomeClass

{

int_port=5000;

publicSomeMethod()

{

}

}

⑶局部变量和方法参数采用Camel风格命名

publicclassSomeClass

{

publicSomeMethod(intlen)

{

stringsLine;

}

}

⑷接口采用I作为前缀命名

interfaceIMyInterface

{

}

⑸自定义属性类型以Attr作为后缀命名

⑹自定义异常类型以Ex作为后缀命名

⑺采用动名词命名方法,例如ShowDialog()

⑻有返回值的方法的命名应该能够描述其返回值,例如GetObjectState()

⑼采用描述性的变量名。

   a)避免采用单字母的变量名,如i或t;而是采用index或temp

b)对public和protected成员避免采用用匈牙利命名法,如:

采用Port不用nPort,

c)尽量不要采用缩写(例如将number缩写为num)

⑽总是使用C#预定义的类型,而不是使用System命名空间中的别名

例如:

采用object不用Object

采用string不用String

采用int不用Int32

⑾对于泛型类型采用大写字母。

当处理.NET类型的Type时保留其后缀Type

//正确方法:

publicclassLinkedList

{……}

//避免使用:

    publicclassLinkedList

{……}

⑿采用有意义的命名空间名,例如产品名称或公司名称

⒀避免使用类的全称,而是采用using声明

⒁避免在命名空间内使用using语句

⒂把所有系统框架提供的名称空间组织到一起,把第三方提供的名称空间放到系统名称空间的下面

using System;  

using System.Collection.Generic;  

using System.ComponentModel;  

using System.Data; 

using MyCompany; 

using MyControls;

⒃使用代理推导而不要显式的实例化一个化代理(C#2.0新特性)

delegate void SomeDelegate();  

public void SomeMethod()  

{…}  

SomeDelegate someDelegate=SomeMethod;

⒄使用tab缩进,缩进4个空格

⒅总是把花括号“{”和“}”独立放在新的一行

⒆一个文件名应该能够反映它所对应的类名

3编码实践

1. 避免在同一个文件中放置多个类

2. 避免在一个文件内写多于500行的代码(机器自动生成的代码除外)

3. 避免写超过25行代码的方法

4. 避免写超过5个参数的方法,如果要传递多个参数,使用结构

5.运算符的两边均应插入一个空格,便于阅读代码

6. 注释时,在注释符号后面插入一个空格,便于阅读代码

//自定义类

public class MyClass

{

...

}

7. 不要手动去修改任何机器生成的代码

a) 如果修改了机器生成的代码,修改你的编码方式来适应这个编码标准

b) 尽可能使用partial classes特性,以提高可维护性。

(C#2.0新特性)

8. 避免对那些很直观的内容作注释,代码本身应该能够解释其本身的含义。

由可读的变量名和方法名构成的优质代码应该不需要注释

9. 注释应该只说明操作的一些前提假设、算法的内部信息等内容

10. 避免对方法进行注释

a) 使用充足的外部文档对API进行说明

b) 只有对那些其他开发者的提示信息才有必要放到方法级的注释中来

11. 除了0和1,绝对不要对数值进行硬编码,通过声明一个常量来代替该数值

12. 只对那些亘古不变的数值使用const关键字,例如一周的天数

13. 避免对只读(read-only)的变量使用const关键字。

在这种情况下,直接使用readonly关键字

public class MyClass

{

public const int DaysInWeek=7;

pubic readonly int Number;

public MyClass(int someValue)

{

Number=someValue;

}

}

14. 对每一个假设进行断言。

平均起来,每5行应有一个断言

using System.Diagnostics;

object GetObject()

{…}

object someObject=GetObject();

Debug.assert(someObject!

=null);

15. 每一行代码都应该以白盒测试的方式进行审读

16. 只捕捉那些你自己能够显式处理的异常

17. 如果在catch语句块中需要抛出异常,则只抛出该catch所捕捉到的异常(或基于该异常而创建的其他异常),这样可以维护原始错误所在的堆栈位置

catch(Exception ex)

{

MessageBox.Show(ex.Message);

throw;//或throw exception;

}

18. 避免利用返回值作为函数的错误代码

19. 避免自定义异常类

20. 当自定义异常类的时候

a) 让你自定义的异常类从Exception类继承

b) 提供自定义的串行化机制

23. 避免friend assemblies,因为这会增加程序集之间的耦合性

24. 避免让你的代码依赖于运行在某个特定地方的程序集

25. 在application assembly(EXE client assemblies)中最小化代码量。

使用类库来包含业务逻辑

26. 避免显式指定枚举的值

//正确  

public enum Color

{

Red,Green,Blue

}

 

//避免  

public enum Color

{

Red=1,Green=2,Blue=3

}

29. 避免使用三元条件操作符

30. 避免利用函数返回的Boolean值作为条件语句。

把返回值赋给一个局部变量,然后再检测

Bool IsEverythingOK()

{…}

 

//避免

if(IsEverythingOk())

{…}

//正确

bool ok=IsEverythingOK();

if (ok)

{…}

31. 总是使用以零为基数的数组

32. 总是使用一个for循环显式的初始化一个引用成员的数组

public class MyClass

{}

const int ArraySize=100;

MyClass[] array=new MyClass[ArraySize];

For (int index=0;index

{

array[index]=new MyClass();

}

33. 使用属性来替代public或protected类型的成员变量

34. 不要使用继承下来的new操作符,使用override关键字覆写new的实现

37. 避免显示类型转换。

使用as关键字安全的转换到另一个类型

Dog dog=new GermanShepherd();

GermanShepherd shepherd=dog as GermanShepherd;

if (shepherd!

=null)

{…}

38. 在调用一个代理前,总是检查它是否为null

39. 不要提供public的事件成员变量。

改用Event Accessor

Public class MyPublisher

{

MyDelegate m_SomeEvent;

Public event MyDelegate SomeEvent

{

add

{

m_SomeEvent+=value;

}

remove

{

m_SomeEvent-=value;

}

}

}

40. 避免定义事件处理代理。

使用EventHandler或者GenericEventHandler

41. 避免显示触发事件。

使用EventsHelper安全的发布事件

42. 总是使用接口

43. 接口和类中方法和属性的比应该在2:

1左右

44. 避免只有一个成员的接口

45. 努力保证一个接口有3~5个成员

46. 不要让一个接口中成员的数量超过20,而12则是更为实际的限制

47. 避免在接口中包含事件

48. 当使用抽象类的时候,提供一个接口

49. 在类继承结构中暴露接口

50. 推荐使用显式接口实现

51. 从来不要假设一个类型支持某个接口。

在使用前总是要询问一下

SomeType obj1;

ImyInterface obj2;

//Some code to initialize obj1,then:

obj2=obj1 as ImyInterface;

if(obj2!

=null)

{

obj2.Method1();

}

else

{

//Handle erro in expected interface

}

53. 不要硬编码那些可能会随发布环境变化而变化的字符串,例如数据库连接字符串

54. 使用String.Empty取代""

//避免

string name=””;

//正确

string name=String.Empty;

55. 使用一个超过80字符的长字符串的时候,使用StringBuilder代替string

56. 避免在结构中提供方法

a) 参数化的构造函数是鼓励使用的

b) 可以重载运行符

58. 当早绑定(early-binding)可能的时候就尽量不要使用迟绑定(late-binding)

59. 让你的应用程序支持跟踪和日志

61. 总在switch语句的default情形提供一个断言

int number=SomeMethod();

swith(number)

{

case 1:

   trace.WriteLine(“Case 1:

”)

break;

case 2:

trace.Writeline(“Case 2:

”);

break;

default:

debug.Assert(false);

break;

}

62. 除了在一个构造函数中调用其它的构造函数之外,不要使用this关键字

//Example of proper use of 'this'

public class MyClass

{

public MyClass(string message)

{...}

public MyClass():

this(“Hello”)

{...}

}

63. 不要使用base关键字访问基类的成员,除非你在调用一个基类构造函数的时候要决议一个子类的名称冲突

//Example of proper use of 'base'

public class Dog

{

public Dog(string name)

{...}

virtual public void Bark(int howlong)

{...}

}

public class GermanShepherd:

Dog

{

public GermanShepherd(string name):

base(name)

{...}

override public void Bark(int howLong)

{

base.Bark(howLong)

}

}

66. 基于《Programming .NET components》2/e中第四章的内容实现Disponse()和Finalize()方法

67. 总是在unchecked状态下运行代码(出于性能的原因),但是为了防止溢出或下溢操作,要果断地使用checked模式

Int CalcPower(int number,int power)

{

int result=1;

for (int count=1;count<=power;count++)

{

checked

{

result*=number;

}

}

return result;

}

68. 使用条件方法来取代显式进行方法调用排除的代码(#if…#endif)

4控件命名

4.1数据类型命名

数据类型

数据类型简写

标准命名举例

Boolean                       

b

bIsPostBack

Integer       

n

nRowCounter

Long                            

l

lPos

Single

f

fMaxX

Double                         

d

dMaxValue

Char                          

c

cDelimiter

String

s

sFirstName

DateTime                     

dt

dtStartDate

Byte                         

byt

bytPixelValue

Decimal

dec

decAverageHeight

Short

sht

shtAverage

Object         

obj                

objReturnValue

Array

后面加s

students

ArrayList

前面加array

arrayStudent

List

前面加list

listStudent

4.2Win控件命名

控件类型

控件类型简写

标准命名举例

Label

lbl

lblMessage

LinkLabel

llbl

llblToday

Button

btn

btnSave

TextBox

txt

txtName

MainMenu

mn

mnFile

MenuItem

mi

miFileOpen

PopupMenu

pm

pmPrint

CheckBox

chk

chkStock

RadioButton

rdo

rdoSelected

GroupBox

gbo

gboMain

PictureBox

pic

picImage

Panel

pnl

pnlBody

DataGrid

grd

grdView

ListBox

lst

lstProducts

CheckedListBox

lst

lstChecked

ComboBox

cbo

cboMenu

ListView

lvw

lvwBrowser

TreeView

tvw

tvwType

TabControl

ctl

ctlSegyInfo

TabPage

Tab

tabTrackInfo

DateTimePicker

dtp

dtpStartDate

HscrollBar

hsb

hsbImage

VscrollBar

vsb

vsbImage

Timer

tim

timCount

ImageList

img

imgList

ToolBar

tlb

tlbManage

StatusBar

stb

stbFootPrint

OpenFileDialog

dlg

dlgOpen

SaveFileDialog

dlg

dlgSave

FoldBrowserDialog

dlg

dlgBrowser

FontDialog

dlg

dlgFont

ColorDialog

dlg

dlgColor

PrintDialog

dlg

dlgPrint

4.3Web控件命名

控件类型

控件类型简写

标准命名举例

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

vale

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2