版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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#eri
2、dreAion 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作为前缀命名int
4、erface 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不用Objec
5、t采用string不用String采用int不用Int32(11)对于泛型类型采用大写宇母。当处理.NET类型的Type时保留其后缀Type、pubdc “忽 UnkcdList<K,T>'器目 LinkedList<KeyType,DataType>(12)采用有意义的命名空间名,例如产品名称或公司名称(13)避免使用类的全称,而是采用using声明(14)避免在命名空间内使用using语句(15)把所有系统框架提供的名称空间组织到一起,把第三方提供的名称空间放到系统名称空间的下面kTla Honat CCD , m m m m tetctctc s s s
6、s VJ VJ vy V ssssusinA usinA using usinx usinir MyCompany;using MyControls;(16)使用代理推导而不要显式的实例化一个化代理(C#2.0新特性) delegate void SomcDclctratcO;public void SomcMcthoaOSomcDclcgate somcDclcgatc=SomcMcthod;(17)使用sb缩进,缩进4个空格(18)总是把花括号“”和“”独立放在新的一行(19) 一个文件名应该能够反映它所对应的类名3编码实践1 .避免在同一个文件中放置多个类2 .避免在一个文件内写多于5(
7、)()行的代码(机器自动生成的代码除外)3 避免写超过25行代码的方法4 .避免写超过5个参数的方法,如果要传递多个参数,使用结构5 .运算符的两边均应插入一个空格,便于阅读代码6 .注释时,在注释符号后面插入一个空格,便于阅读代码/自定义类【最新整理,卜载后即可编辑】public class MyClass)7 .不要手动去修改任何机器生成的代码勾如果修改了机器生成的代码,修改你的编码方式来适应这个编 码标准b)尽可能使用partial classes特性,以提高可维护性。(C#2.0新特 性)&避免对那些很直观的内容作注释,代码本身应该能够解释其本身的 含义。由可读的变量名和方法名
8、构成的优质代码应该不需要注释9 .注释应该只说明操作的一些前提假设、算法的内部信息等内容1(). 避免对方法进行注释勾使用充足的外部文档对API进行说明b)只有对那些其他开发者的提示信息才有必要放到方法级的注释 中来11 .除了()和1,绝对不要对数值进行硬编码,通过声明一个常量来代 替该数值12 .只对那些亘古不变的数值使用const关键宇,例如一周的天数13 .避免对只读(read-only)的变量使用const关键宇。在这种情况下,直 接使用readonly关键宇public class MyClasspublic const int DaysInWcek Z1 7;pubic read
9、only int Number;public MyClass(int some Value) Number=someValue;14对每一个假设进行断言。平均起来5每5行应有一个断言usingSvstcm.DiaAiostics;object GctObjectQ ; object somcObjcct = GctObjectQ; Debug.assert(some()bjcct != null);15 .每一行代码都应该以白盒测试的方式进行审读16 .只捕捉那些你自己能够显式处理的异常17 .如果在catch语句块中需要抛出异常,则只抛出该catch所捕捉到的【最新整理,下载后即可编辑】04
10、" C#编码规范第12/12页异常(或基于该异常而创建的其他异常),这样可以维护原始错误所在的堆 栈位置catch(Exccption ex)McssaAeBox.Show(cx.McssaAc); throw; 或 throw exception;18 避免利用返回值作为函数的错误代码19 .避免自定义异常类2() .当自定义异常类的时候a)让你自定义的异常类从Exception类继承b)提供自定义的串行化机制23 .避免friend assemblies,因为这会增加程序集之间的耦合性24 .避免让你的代码依赖于运行在某个特定地方的程序集25 .在 application ass
11、embly (EXE client assemblies)中最小化代码量。使用 类库来包含业务逻辑26 .避免显式指定枚举的值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循环显
12、式的初始化一个引用成员的数组public class MyClassconst int ArraySizc= 10();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 do£y = new G
13、ermanShepherdO ;GermanShepherd shepherd = dog as GermanShepherd;if (shephera != null)38 .在调用一个代理前,总是检查它是否为null39 .不要提供public的事件成员变量。改用Event Accessor Public class MvPublisherMyDclcyAtc m_SomcEvent;Public event MyDcley; ate SomcEventaddm SomcEvcnt+ = value;removem SomcEvcnt-=valuc;)40 .避免定义事件处理代理。使用Ev
14、cntHandler<T>或者GcnericEvcntHandlcr41 .避免显示触发事件。使用EvcntsHelper安全的发布事件42 .总是使用接口43 .接口和类中方法和属性的比应该在2:1左右44 .避免只有一个成员的接口45 .努力保证一个接口有35个成员46 .不要让一个接口中成员的数量超过2(),而12则是更为实际的限制47 .避免在接口中包含事件【最新整理,下载后即可编辑】气心1C#编码规范第12/12页4&当使用抽象类的时候,提供一个接口49.在类继承结构中暴露接口5() .推荐使用显式接口实现51 .从来不要假设一个类型支持某个接口。在使用前总是要询
15、问一下 SomcTypu objl;Imylnterfacc obj2;/ Some code to initialize objl,thcn:obj2 二 objl 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()宇符禹长宇符串的时候,使用String
16、Builder代替 string56 .避免在结构中提供方法a)参数化的构造函数是鼓励使用的b)可以重载运行符58 .当早绑定(early-binding)可能的时候就尽量不要使用迟绑定(late- binding)59 .让你的应用程序支持跟踪和日志61 .总在switch语句的default情形提供一个断言 int number 二 SomcMcthodO; swith(numbcr)case 1: “"trace.WritcLine( Case 1:)break;case 2: “"trace.Writeline( Case 2:);break;default: dc
17、buA.Assert(falsc); break;【最新整理,下载后即可编辑】C#编码规范第12/12页62 .除了在一个构造函数中调用其它的构造函数之外,不要使用this关 键字/ Example of proper use of *this* public class MyClasspublic MyClass(string message) public MyClass():this( CHellon)63 .不要使用base关键字访问基类的成员,除非你在调用一个基类构造 函数的时候要决议一个子类的名称冲突/ Example of proper use of Aase! public c
18、lass Do 乂public DotAstrinA name)( f .virtual public void Bark(int howlonApublic class Germanshcphcrd:DoA;public GcrmanShephcrd(strino ; namc):base(name)override public void Bark(int howLonA base.Bark(howLontA 66.基于Programming .NET components2/e 中第四章的内容实现 DisponseO和Finalize。方法67 .总是在unchecked状态下运行代码(
19、出于性能的原因),但是为了防止溢出或下溢操作,要果断地使用cheeked模式Int CalcPower(int numberAint power)int result=l;for (int count=l ;count<=power;count+) checkedresult* 二 number;return result;6&使用条件方法来取代显式进行方法调用排除的代码4控件命名4数据类型命名数据类型数据类型简写标准命名举例BooleanbblsPostBackIntegernnRowCountcrLong1IPosSingleffMaxXDoubleddMaxV alucCh
20、arccDclimiterStringssFirstNamcDatcTimedtdtStartDatcBytebvtJbvtPixelV alucJDecimaldecdccAveragcHeightShortshtsht A verageObjectobjobj Return ValueArray后面加SstudentsArrayList前面加arrayarravStudcntJList前面加listlistStudcnt4.2 Win控件命名控件类型控件类型简写标准命名举例LabelIblIblMcssagcLinkLabclllblllblTodayButtonbtnb tnSaveTe
21、xtBoxtxttxtNameMainMcnumnmnFilcMcnultcmmimiFilcOpcnPopupMcnupmpmPrintChcckBoxchkchkStockRadioButtonrdordoSclcctcd【最新整理,下载后即可编辑】jaAC#编码规范第12/12页GroupBoxgbogboMainPicturcBoxpicpiclmagePanelpnlpnlBodyDataGridgrdgrd ViewListBox1stIstProductsCheckedListBox1stIstChcckcdComboBoxcbocboMcnuListVicwIvwIvwBrow
22、surTree ViewtvwtvwTypuTabControlctlctlSegy-InfoTabPageTabtabTracklnfoDatcTimePickcrdtpdtpS tar tD ateHscrollBarhsbhsblmagcVscrollBarvsbvsblmagcTimertimtimCountImageListimgimgListToolBardbtlbManageStatusBarstbstbFootPrintOpenFileDialogdigdlgOpcnSaveFilcDialogdigdlgSaveFoldBrowserDialogdigdlgBrowscrFo
23、ntDialogdigdlgFontColorDialogdigdlgColorPrintDialogdigdlgPrint43 Web控件命名控件类型控件类型简写标准命名举例AdRotatoradrtExampleButtonbtnbtnSubmitCalendarcalcalMcttingDatesChcckBoxchkchkBlueChcckBoxListchklchklFaxAColorsCompare V alidatorvalevale Valid AgeCustomValidatorvalxvalxDBChcckDataGriddgrddgrdTitlesDataListdlstdlstTitlesDropDownListdropdropCountricsHyperLinkInkInkDetailsImageimgimgAuntBettyImagcButtonibtnibtnSubmitLabelIblIblRcsultsLinkButtonIbtnIbtnSubmitListBox1stIstCountricsPanelpnlpnlForm2PiaccHoldcrplhplhFo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 备考会计基础秀课件推
- 养老院老人康复理疗师职业发展规划制度
- 增收节支课件
- 2024年挖掘机租赁合同范本(含应急维修服务)3篇
- 2024年度生态园林树木补种与养护管理合同3篇
- 大年夜学期末财务学课件期末温习资料试卷
- 《肝癌与其他》课件
- 2024年版:工程机械短期租赁协议
- 《在大多数广告中》课件
- 2025年四川货运从业考试试题及答案详解
- 小学生相声剧本(10篇)
- 2023-2024学年山东省胶州市初中语文九年级上册期末自测测试题
- 人力资源专员招聘笔试题
- LY/T 1646-2005森林采伐作业规程
- GB/T 7714-2015信息与文献参考文献著录规则
- GB/T 7531-2008有机化工产品灼烧残渣的测定
- GB/T 19963.1-2021风电场接入电力系统技术规定第1部分:陆上风电
- GB/T 13586-2006铝及铝合金废料
- 二年级上册数学试题-应用题复习6-人教新课标(2014秋)(无答案)
- 丽声北极星分级绘本第一级上Tiger-Is-Coming课件
- 2023年哈工大模电大作业
评论
0/150
提交评论