C#编码规范.ppt_第1页
C#编码规范.ppt_第2页
C#编码规范.ppt_第3页
C#编码规范.ppt_第4页
C#编码规范.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编 码 规 范,江西微软技术中心 2011-08,一、概述 二、实例讲解 三、注意点 四、Q int intNum;/希望长度与现有长度的差值 intNum = intLength - strIn.Length; strReturnValue = strIn; /按照长度差值,在前面补充“0” for (int i = 0; i intNum; i+) strReturnValue = 0 + strReturnValue; return strReturnValue; ,/* * 补齐长度 (不足长度的在前面补0) */ public static String SupplyLength(S

2、tring a, int b) String x = ; int i; i = b - a.Length; x = a; for (int j = 1; j = i; j+) x = 0 + x; return x; ,编码规范概述,SELECT STUDENT.STUDENTID, STUDENT.NAME, STUDENT.SEX, STUDENT.BIRTHDAY, CLASS.CLASSNAME FROM STUDENT, CLASS WHERE STUDENT.BELONGCLASSID=CLASS.CLASSID AND STUDENT.NAME=张三,SELECT A.STUDE

3、NTID,A.NAME, A.SEX,A.BIRTHDAY,B.CLASSNAME FROM STUDENT A,CLASS B WHERE A.BELONGCLASSID = B.CLASSID AND A.NAME =张三,编码规范概述,编码规范的必要性 多人协作时,代码清晰易懂 容易发现代码的问题,调试时比较容易 体现公司形象 编码规范的要点 排版规范(缩进、空行) 注释规范清晰 类名、方法名定义规范(大小写) 变量定义规范(大小写、变量有意义),实例讲解,C#的编码规范 SQL的编码规范 ASP.NET的编码规范,实例讲解,C#的编码规范 制定原则 1 参照微软在VS.NET中,C#既

4、有的规范来制定 2 方便代码的交流和维护。 3 不影响编码的效率,不与大众习惯冲突。 4 使代码更美观、阅读更方便。 5 使代码的逻辑更清晰、更易于理解。 遵守原则 首先遵守客户要求的规则 在客户没有指定规则的情况下,遵守本规则,实例讲解,C#的编码规范 文件/类的命名规则 方法的命名规则 常量、变量、参数的定义规则 代码的格式 注释的书写格式 效率方面注意的问题,实例讲解,C#的编码规范 术语定义: Pascal 大小写 将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。 例如: BackColor Camel 大小写 标识符的首字母

5、小写,而每个后面连接的单词的首字母都大写。例如: backColor 匈牙利 大小写 标示符的首字母用类型的简写,而每个后面连接的单词的首字母大写。例如: strBackColor,通用命名约定 单词的选择 标志符的名字应该清楚地说明每个成员做什么,以及每个类型和参数表示什么。为此,名字的意思清楚比长度更重要。名字应该与场景、系统的逻辑组成或物理组成以及为人熟知的概念相对应,而不应该与技术或架构相对应。 要为标志符选择易于阅读的名字 一个名为HorizontalAlignment的属性就比AlignmentHorizontal更易于阅读。 要更看重可读性,而不是更看重简短性 CanScroll

6、Horizontally要胜过ScrollableX 不要使用下划线、连词符以及其它任何既非字母也非数字的字符。下划线作为私有字段的前缀是个例外。 不要在控件和变量的范围外使用匈牙利命名法。,使用单词缩写和首字母缩写词 避免使用与广泛使用的编程语言的关键字有冲突的标志符。 不要使用缩写词和缩约词作为标志符名称的一部分。 缩约词,如:wont是will not 的缩约词 例如:要用GetWindow,而不要用GetWin 不要使用未被广泛接受的首字母缩写词,即使被广泛接受的首字母缩写词,也只应在必需的时候才使用。 要给类型名使用语义上的有意义的名字,而不要使用语言特有的关键字。 如:GetLen

7、gth比GetInt要好。 要使用常见的名字,如value和item,而不是重复类型的名字如果除了类型之外,标志符没有其它的语义,而且参数的类型不重要。 如:Compare(object obj)改为Compare(object target),实例讲解,C#的编码规范 文件的命名规则 文件的命名采用Pascal命名规则,无特殊情况,文件的扩展名小写。 文件的扩展名使用统一而且通用的扩展名,如C#类使用扩展名:.cs 例如:StudentInfo.cs ProfesserInfo.cs Department.cs,实例讲解,C#的编码规范 类的命名规则 类的名字必须是有意义的,且与类实现的功能

8、或业务逻辑相关的名字。 除接口类的其他所有类(包括普通类、抽象类等)都采用Pascal命名法,且主类的名字与文件名一致。 接口类有自己特殊的命名规则:类的前缀为“I”,后面连接Pascal命名法所起的有意义的名字。同样,类名与文件名相同,如:IFormatable。,实例讲解,C#的编码规范 方法的命名规则 按照C#语言本身的原始特征,方法的命名采用Pascal命名规则。另外,方法的命名应该说明的是“做什么”,而不是“如何做”;方法的名称应该足够长以便有一定的意义,又应该足够短,以避免冗长。 如: WriteToFile()。,实例讲解,C#的编码规范 常量 所有的常量都必须是大写字母组成,如

9、果常量有几个单词组成,则单词之间用下划线“_”进行连接,如: private const string USER_NAME = “abc”;,实例讲解,C#的编码规范 变量 变量在定义的时候,需要根据变量的数据类型添加不同的前缀(前缀全部小写),但不需要区分其作用域。另外,变量的命名规则采用Pascal命名规范。如: private string strName = “”;,实例讲解,C#的编码规范 变量 C#中各常用的变量的前缀如下表所示:,实例讲解,C#的编码规范 变量 C#中各常用的变量的前缀如下表所示(续):,实例讲解,C#的编码规范 变量 C#中各常用的变量的前缀如下表所示(续):,

10、实例讲解,C#的编码规范 参数 在方法定义中的形参,采用Pascal命名方法,不需要根据数据类型来添加前缀,作为调用方法时传递的实参,则采用上面变量的命名规则,使用数据类型前缀+Pascal命名方法。 如: void SetName(String Name) 调用的时候,可以如下: string strName = “abc”; SetName(strName);,实例讲解,C#的编码规范 代码格式 代码的格式包括缩进、换行、空行、空格等,为了不影响编码的效率,在此只作如下规定: 空格、空行不做严格的固定,以使代码清晰为基本原则。空行不影响程序的运行,但可以使代码看起来清晰,增加可读性,因此可

11、以适当的多用。 代码的缩进建议使用tab键进行控制,tab键的大小设置为4个空格。每个层次都要进行缩进。 如: if (isOverFlow) return false; /end if 换行,掌握的原则是不要使一行代码特别的长,再不产生严重歧义或增加阅读难度的情况下,尽量控制在120列之内,以方便代码的打印。另外,换行的原则是,在逗号后,操作符前换行,换行与首行要保持一个单位的缩进。 如: string strSql = “SELECT ID,NAME,SEX,BIRTHDAY,” + “BELONGCLASSID,BELONGGRADEID “ + “FROM STUDENTINFO”;

12、、必须单独在一行上,且上下对齐。 if,while,do,try-catch-finally等语句后必须有,即使里面只有一条语句或为空,且遵循、单独成行的原则。,实例讲解,C#的编码规范 注释 要养成良好的代码注释习惯,通常,注释要占实际代码总行数的1/3,同时,要在编写代码前或编写代码的同时进行代码的注释,不要事后补写注释。 注释分为多行注释和单行注释,我们的原则是:在类和方法的前面,要写多行注释,在定义类的全局变量/常量,以及方法的内部,使用单行注释。注释的前面与代码之间要有空行。 即使是单行注释,我们鼓励都要单独一行,不鼓励在语句的后面使用注释,当然,在变量定义的后面使用注释也是允许的,

13、但不建议这么做。 另外,在编写注释的时候,建议使用C#自己的注释风格,即在类的前面和方法的前面使用“/”进行注释。,实例讲解,C#的编码规范 注释(续) 特别注意,如果是在已经发行版本的基础上添加、修改、删除代码,则需要将原先的代码注释掉,而不是直接删除掉,然后添加自己的代码。如: 添加新代码的注释: /add by 姓名 yyyyMMdd xxx / add by 姓名 yyyyMMdd 修改代码的注释: /update by 姓名 yyyyMMdd / xxx yyy / update by 姓名 yyyyMMdd 删除代码的注释: /delete by 姓名 yyyyMMdd /xxx

14、/ delete by 姓名 yyyyMMdd,实例讲解,C#的编码规范 声明 每行只定义一个声明,多个声明要分多行来定义。如: int intAge,intWeight;/不推荐 应使用如下的定义形式: int intAge; int intWeight; 声明的位置: 变量要在块的开始的地方集中进行声明,不要何时用到何时临时定义。,实例讲解,SQL的编码规范 字符大小写问题 表/字段的别名 换行 嵌入式SQL书写规范,实例讲解,SQL的编码规范 字符大小写问题 因为SQL语言对于关键字不区分大小写,所以SQL语句的关键字全部使用大写字母表示。对于字段名,也全部使用大写。而对于表名,应该与实

15、际表名的大小写一致(否则在某些情况下会出错),除非使用别名。 如: SELECT ID, NAME FROM EMPLOYEE WHERE ID = 123,实例讲解,SQL的编码规范 别名 表的别名 书写规范 表的别名建议采用简单的字母组合来表示,1-3个字母为宜,不能使用双字节的文字来作为表的别名 表的别名要使用大写字母 使用原则 SQL语句中只有一个表名的情况下,表名不使用别名; 多表联合操作的情况下,如果表名比较长,并且字段需要表名进行限定,此时建议使用别名; 自连接的情况下,请使用别名。,实例讲解,SQL的编码规范 别名 表的别名(举例) SELECT ID,NAME FROM ST

16、UDENT; 单表不使用别名 SELECT STU.ID,STU.NAME,CLS.ID,CLS.NAME FROM STUDENT STU,CLASS CLS WHERE STU.BELONGCLASSID = CLS.ID 以上多表,且字段名需要表名来限定,此时需要别名 SELECT ST1.NAME,ST2.NAME AS LEADERNAME FROM STUDENT ST1,STUDENT ST2 WHERE ST1.LEADERID = ST2.ID AND ST1.ID ST2.ID 以上是自连接,此时必须使用别名,实例讲解,SQL的编码规范 别名 字段的别名 书写规范 字段的别

17、名应该简单明了,且有意义,使用半角的英文、数字、特殊字符(_-)等来表示,不使用空格。 字段名别名要使用大写字母。 使用原则 字段名一般情况下不使用别名,以下两种情况除外: 表示的字段是表达式; 选择列表中出现了相同的字段名,实例讲解,SQL的编码规范 别名 字段的别名(举例) SELECT ID,NAME FROM STUDENT; 不使用字段别名 SELECT ID,NAME,COUNT(*) STU_COUNT FROM STUDENT 表示的字段是表达式,此时使用别名,以方便取值 SELECT STU.NAME,CLS.NAME FROM STUDENT STU,CLASS CLS W

18、HERE STU.BELONGCLASSID = CLS.ID 以上是选择列表中出现了相同的字段名,此时必须使用别名,实例讲解,SQL的编码规范 换行 为了使SQL语句清晰,便于理解和维护,需要对SQL语句做一些处理,包括换行。 换行遵循如下原则: 每一个子句另外一行; 如果一个子句过长,建议将子句再换行,换行的原则是在标点符号(如逗号)后,SQL关键字前面换行,并且要有一个缩进(TAB键),每个函数或表达式是一个整体,不要在其之间换行。如: SELECT ITEMID, PRODUCTID, AVG(LISTPRICE), AVG(UNITCOST) FROM ITEM WHERE NAME

19、 LIKE %ABC AND SUPPLIER=1 AND STATUS = P GROUP BY ITEMID, PRODUCTID,实例讲解,SQL的编码规范 交互式SQL 在联机终端上直接交互使用SQL -前面讲的都是交互式SQL的编写规范 嵌入式SQL 将SQL语言嵌入到其他宿主语言编写的程序中,作为宿主语言的子语言,使宿主语言具备访问数据库的能力 宿主语言本身不能直接识别SQL语句。 宿主语言:COBOL,C,PASSCAL,VC+,VB,C#,DELPHI,CB等。,实例讲解,SQL的编码规范 嵌入式SQL 在OOP语言中,对于嵌入式SQL语言的书写,要遵循如下规范: 所有的表名、

20、字段名都应该使用常量,为的是在以后数据表的结构或字段名有所变化的情况下,能够减少或杜绝遍布程序各处的SQL语句的变更,而只在定义常量的地方改变一下即可。,实例讲解,SQL的编码规范 嵌入式SQL(举例),Public static string TABLENAME = “Student”; Pubic static string ID= “Id”; Public static string NAME = “Name”; Public static string SEX= “Sex”; Public static string BIRTHDAY= “Birthday”; Student.cs,S

21、tringBuilder sbSql = new StringBuilder(); sbSql.Append(“SELECT “).Append(ID).Append(“,”); sbSql.Append(NAME).Append(“,”); sbSql.Append(SEX).Append(“,”); sbSql.Append(BIRTHDAY).Append(“ “); sbSql.Append(“FROM “).Append(TABLENAME); Student.cs,StringBuilder sbSql = new StringBuilder(); sbSql.Append(“SELECT STU.“).Append(Student.ID).Append(“,”); sbSql.Append(“STU.”).Append(Student.NAME).APPEND(“,”); sbSql.Append(“STU.”).Append(Student.SEX).Append(“,”); sbSql.Append(“STU.”). Append(Student.BIRTHDAY).Append(“ “); sbSql.Append(“FROM “).Append(Student.TABLENAME); Class.cs,String strSql = “

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论