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

上传人:M****1 文档编号:507743439 上传时间:2023-06-13 格式:DOCX 页数:15 大小:57.95KB
返回 下载 相关 举报
C#编码规范(完整资料).doc_第1页
第1页 / 共15页
C#编码规范(完整资料).doc_第2页
第2页 / 共15页
C#编码规范(完整资料).doc_第3页
第3页 / 共15页
C#编码规范(完整资料).doc_第4页
第4页 / 共15页
C#编码规范(完整资料).doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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

1、C#编码规范第12/12页【最新整理,卜载后即可编辑】1程序结构所有源代码的结构均采用以下顺序布局,对于没有的部分可以省略, 便于阅读代码。匕二三三三寻三#rcdon Constant#eridreAion Constant #reAon Members#endreAion Members #rcyion Defaults#cridreAion Defaults #recoil Properties#cnarexion Properties #re$ion Constructors#cridrexion Constructors #reyjon InterfaceMethods#eridreA

2、ion InterfaceMethods #redon StaticMethods#endreAion StaticMethods #region ()vcrridcMethods#cridreAion OverrideMethods #reAion PrivateMethods#cnarexion PrivateMethods #redon ProtectedMethods#eridreAion ProtectedMethods #redon PublicMethods#enarexion PublicMethods #redon Events#enarexion Events2命名规则和风

3、格类、方法、常量采用Pascal风格命名public class SomcClassconst int DefaultSizc = 10();public SomeMcthodO【最新整理,卜载后即可编辑】气心C#编码规范第12/12页成员变量采用Camel风格命名,但前面加一个底划线public class SomeClassint _port 二 5000;public SomeMcthodO局部变量和方法参数采用Camel风格命名public class SomeClasspublic SomeMethod(int len)string sLinc; 接口采用I作为前缀命名interfa

4、ce IMylntcrface(5)自定义属性类型以Am作为后缀命名自定义异常类型以Ex作为后缀命名采用动名词命名方法,例如ShowDialogO(8)有返回值的方法的命名应该能够描述其返回值,例如 Gct()bjcctStatc()(9)采用描述性的变量名。a)避免采用单字母的变量名5如i或t;而是采用indux或tempb)对public和protected成员避免采用用匈牙利命名法,如:采用Port 不用 nPort,c)尽量不要采用缩写(例如将number缩写为num)(1。)总是使用C#预定义的类型,而不是使用System命名空间中的别名 例如:采用object不用Object采用s

5、tring不用String采用int不用Int32(11)对于泛型类型采用大写宇母。当处理.NET类型的Type时保留其后缀Type、pubdc “忽 UnkcdList器目 LinkedList(12)采用有意义的命名空间名,例如产品名称或公司名称(13)避免使用类的全称,而是采用using声明(14)避免在命名空间内使用using语句(15)把所有系统框架提供的名称空间组织到一起,把第三方提供的名称空间放到系统名称空间的下面kTla Honat CCD , m m m m tetctctc s s s s VJ VJ vy V ssssusinA usinA using usinx usi

6、nir MyCompany;using MyControls;(16)使用代理推导而不要显式的实例化一个化代理(C#2.0新特性) delegate void SomcDclctratcO;public void SomcMcthoaOSomcDclcgate somcDclcgatc=SomcMcthod;(17)使用sb缩进,缩进4个空格(18)总是把花括号“”和“”独立放在新的一行(19) 一个文件名应该能够反映它所对应的类名3编码实践1 .避免在同一个文件中放置多个类2 .避免在一个文件内写多于5()()行的代码(机器自动生成的代码除外)3 避免写超过25行代码的方法4 .避免写超过5

7、个参数的方法,如果要传递多个参数,使用结构5 .运算符的两边均应插入一个空格,便于阅读代码6 .注释时,在注释符号后面插入一个空格,便于阅读代码/自定义类【最新整理,卜载后即可编辑】public class MyClass)7 .不要手动去修改任何机器生成的代码勾如果修改了机器生成的代码,修改你的编码方式来适应这个编 码标准b)尽可能使用partial classes特性,以提高可维护性。(C#2.0新特 性)&避免对那些很直观的内容作注释,代码本身应该能够解释其本身的 含义。由可读的变量名和方法名构成的优质代码应该不需要注释9 .注释应该只说明操作的一些前提假设、算法的内部信息等内容1().

8、 避免对方法进行注释勾使用充足的外部文档对API进行说明b)只有对那些其他开发者的提示信息才有必要放到方法级的注释 中来11 .除了()和1,绝对不要对数值进行硬编码,通过声明一个常量来代 替该数值12 .只对那些亘古不变的数值使用const关键宇,例如一周的天数13 .避免对只读(read-only)的变量使用const关键宇。在这种情况下,直 接使用readonly关键宇public class MyClasspublic const int DaysInWcek Z1 7;pubic readonly int Number;public MyClass(int some Value) N

9、umber=someValue;14对每一个假设进行断言。平均起来5每5行应有一个断言usingSvstcm.DiaAiostics;object GctObjectQ ; object somcObjcct = GctObjectQ; Debug.assert(some()bjcct != null);15 .每一行代码都应该以白盒测试的方式进行审读16 .只捕捉那些你自己能够显式处理的异常17 .如果在catch语句块中需要抛出异常,则只抛出该catch所捕捉到的【最新整理,下载后即可编辑】04 C#编码规范第12/12页异常(或基于该异常而创建的其他异常),这样可以维护原始错误所在的堆

10、栈位置catch(Exccption ex)McssaAeBox.Show(cx.McssaAc); throw; 或 throw exception;18 避免利用返回值作为函数的错误代码19 .避免自定义异常类2() .当自定义异常类的时候a)让你自定义的异常类从Exception类继承b)提供自定义的串行化机制23 .避免friend assemblies,因为这会增加程序集之间的耦合性24 .避免让你的代码依赖于运行在某个特定地方的程序集25 .在 application assembly (EXE client assemblies)中最小化代码量。使用 类库来包含业务逻辑26 .避

11、免显式指定枚举的值public型um Color(、Red,Green,Blue品免r ipublic enum ColorRed = 1, Green = 2, Blue = 329 .避免使用三元条件操作符3().避免利用函数返回的Boolean值作为条件语句。把返回值赋给一个局部变量,然后再检测Bool IsEvurything)K()碍皿0)正确bool ok=IsEver5rthino )K0;if (ok)31 总是使用以零为基数的数组32 .总是使用一个for循环显式的初始化一个引用成员的数组public class MyClassconst int ArraySizc= 10(

12、);MyClassf array=new MvClass ArravSizc;For (int index=();indcx array. Length;inacx+) arraylindex=new MyClassO;33 .使甫属性亲替代public或protected类型的成员变量34 .不要使用继承下来的new操作符,使用override关键宇覆写new的 实现37 .避免显示类型转换。使用as关键字安全的转换到另一个类型Dog doy = new GermanShepherdO ;GermanShepherd shepherd = dog as GermanShepherd;if (

13、shephera != null)38 .在调用一个代理前,总是检查它是否为null39 .不要提供public的事件成员变量。改用Event Accessor Public class MvPublisherMyDclcyAtc m_SomcEvent;Public event MyDcley; ate SomcEventaddm SomcEvcnt+ = value;removem SomcEvcnt-=valuc;)40 .避免定义事件处理代理。使用EvcntHandler或者GcnericEvcntHandlcr41 .避免显示触发事件。使用EvcntsHelper安全的发布事件42

14、.总是使用接口43 .接口和类中方法和属性的比应该在2:1左右44 .避免只有一个成员的接口45 .努力保证一个接口有35个成员46 .不要让一个接口中成员的数量超过2(),而12则是更为实际的限制47 .避免在接口中包含事件【最新整理,下载后即可编辑】气心1C#编码规范第12/12页4&当使用抽象类的时候,提供一个接口49.在类继承结构中暴露接口5() .推荐使用显式接口实现51 .从来不要假设一个类型支持某个接口。在使用前总是要询问一下 SomcTypu objl;Imylnterfacc obj2;/ Some code to initialize objl,thcn:obj2 二 ob

15、jl as Imylnterfacc;if(obj2 C null)obj 2.Method 1();else/ Handle erro in expected interface53 .不要硬编码那些可能会随发布环境变化而变化的字符串,例如数据 库连接字符串54 使用String.Empty取代心/避免 OT。二.;string name Z1 String.Empty;55,使用一个超过8()宇符禹长宇符串的时候,使用StringBuilder代替 string56 .避免在结构中提供方法a)参数化的构造函数是鼓励使用的b)可以重载运行符58 .当早绑定(early-binding)可能的时候就尽量不要使用迟绑定(late- binding)59 .让你的应用程序支持跟

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号