




免费预览已结束,剩余34页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#编码指南说明文档中信泰富工程技术(上海)有限公司自动化二部MES系统C#编码指南说明文档中信泰富工程技术(上海)有限公司2009年03月文档履历版本时间更改部分设计人备注1.02009-03-06最初版本初始版本目录一 引言4(一)概述4术语和定义4二 基本原则5三 文件结构6(一)基本格式6(二)对齐10(三)空行空格11(四)断行13四 注释17五 命名规则21六 声明31七 表达式与语句32八 类和接口35九 框架要求37一 引言(一)概述编写本标准的目的是为了统一日常工作中的编程风格,提高代码的可读性、可靠性和可重用性,提高软件源程序的质量和可维护性,减少软件维护成本,最终提高工作生产力。本规范是针对C#语言的编程规范,本规范主要适用于公司系统开发标准,同时也可作为公司其它项目的特定编码规范参考。本规范分成规则性和建议性两种:对于规则性规范,要求所有软件开发人员严格执行,对于建议性规范,各项目编程人员可以根据实际情况选择执行。本规范起草部门:自动化二部术语和定义下列术语和定义适用于本标准规范 原则编程时应该坚持的指导思想。 规则编程时应该遵守的约定, 说明对此规则或建议的必要的解释。 正例对此规则或建议给出的正确例, 反例对此规则或建议给出的反面例子。 执行标准编程时候对此约定的遵守程度,一般分为强制,建议,参考三种情形。强制,表示在编程时候必须严格遵守的约定。建议,对编程过程中,为了统一风格,建议遵守的约束,不会严格作为代码的考核标准。参考,针对编程工程中,一些资源提出了比较符合规范的资料和信息。可作为编程过程中的参考。二 基本原则【原则 1-1】 首先是为人编写程序,其次才是计算机。 说明:这是软件开发的基本要点,软件的生命周期贯穿产品的开发、测试、生产、用户使用、版本升级和后期维护等长期过程,只有易读、易维护的软件代码才具有生命力。【原则1-2】保持代码的简明清晰,避免过分的编程技巧。说明:简单是最美。保持代码的简单化是软件工程化的基本要求。不要过分追求技巧,否则会降低程序的可读性。【原则1-3】所有代码尽量遵循Microsoft MSDN中C#语言规范说明:所有代码应尽量遵循MSDN中对C#语言定义的标准和规范,尽可能不使用其它文档对C#语言的定义或者自己的特殊习惯。 引用地址 【原则1-4】编程时首先达到正确性,其次考虑效率。说明:编程首先考虑的是满足正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用。【原则1-5】避免或少用全局变量。说明:过多地使用全局变量,会导致模块间的紧耦合,违反模块化的要求。【原则1-6】尽可能重用、修正老的代码。说明:尽量选择可借用的代码,对其修改优化达到自身的要求。【原则1-7】 尽量减少同样的错误出现的次数。说明:事实上,我们无法做到完全消除错误,但通过不懈的努力和细心的工作,可以减少同样的错误出现的次数。三 文件结构 程序布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。更重要的是,统一的程序布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且涉及到产品质量,涉及到个人编程能力的提高,必须引起大家重视。(一)基本格式【规则1-1-1】源代码文件(.cs)的布局顺序是:注释、using指令、namespace、类。 执行标准:强制正例: /* / 文件名称: 题目名称 / 文件描述: 本类描述 / 版权所有: 版权所有(C)2009-2015 / 公 司: 中信泰富工程技术(上海)有限公司 / 内容摘要: 简要描述本文件的内容,包括主要模块、函数及其功能的说明 / 其他说明: 其它内容的说明 / 完成日期:输入完成日期,例:2009年02月25日 / 修改记录1: 修改历史记录,包括修改日期、修改者及修改内容 / / 修改日期: / 版 本 号: / 修 改 人: / 修改内容: / / version 1.0 / author 作者姓名 / Email 作者信箱或MSN /* using System;using System.Data; namespace SinoLink.XXX.BaseClass / / 对ClassName的描述 / public class ClassName 【规则1-1-2】遵循统一的布局顺序来书写using指令,不同类别的using指令之间用空行分隔。无用的using要删除。 说明:using语句排列顺序为.Net Framework定义的命名空间在最前面,接下来为引用外部或者第三方的命名空间,最后是程序自身内部引用的命名空间,而且按照字母顺序排序。using指令后可跟namespace语句,与namespace语句间隔一个空行。 执行标准:建议 正例: using System;using System.Data; /.Net Framework自身定义的命名空间using Com.Other.Data; /引用的第三方命名空间using SinoLink.XXX.Access; /程序自身引用的内部命名空间 【规则1-1-3】程序中一行的代码和注释不能超过120列。说明:包括空格在内不能超过120列。执行标准:建议【规则1-1-4】源程序中关系较为紧密的代码应尽可能相邻。增加代码段分割标志,分割标志必须使用#region和#endregion指令,方便代码段的分割,各种不同功能的代码放到相应的代码段中。段落之间空行只要空一行。现在包括的代码段包括:常量定义、变量定义、构造方法、公共方法、内部方法、界面事件响应方法、调试方法等,一般的代码段顺序也应和上面一致。说明:程序中,表示不同功能的代码应放在各自不同的代码段中,以方便阅读和在编辑器中折叠代码段,使代码段落清晰简洁。执行标准:建议正例: #region 属性定义 #endregion / 空一行#region 方法定义 #region 对用户信息操作的方法 #endregion #region 对帐户信息操作的方法 #endregion #endregion【规则1-1-5】if、else、else if、for、while、do等语句独占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 。说明:这样可以防止书写失误,也易于阅读。执行标准:强制正例:if (varible1 varible2) varible1 = varible2;反例:下面的代码执行语句紧跟if的条件之后,而且没有加,违反规则。if (varible1 varible2) varible1 = varible2; (二)对齐 【规则1-2-1】一般禁止使用制表符,必须使用空格进行缩排。缩进为4个空格。 说明:若使用Visual Studio编辑器,一般默认的缩进为4个空格,若使用其它编辑器必须保证此缩进格式。 执行标准:建议【规则1-2-2】程序的分界符和应独占一行,同时与引用它们的语句左对齐。 之内的代码块使用缩进规则对齐。 说明:这样使代码便于阅读,并且方便注释。 执行标准:建议 正例:void function(int var) while (condition)doSomething();/ 与 缩进4格/与引用它们的模块左对齐反例:void function(int var)while (condition)doSomething();(三)空行空格【规则1-3-1】不同逻辑程序块之间要使用空行分隔。 说明:空行起着分隔程序段落的作用。适当的空行可以使程序的布局更加清晰。 执行标准:建议 正例:void doSomething()/doSomething实现代码/ 空一行void doOtherThing()doOtherThing实现代码反例:void doSomething() doSomething实现代码void doOtherThing()doOtherThing实现代码/ 两个函数的实现是两个逻辑程序块,应该用空行加以分隔。【规则1-3-2】一元操作符如“+”、“-”、“!”、“”、(类型)等前后不加空格。“”“.”这类操作符前后不加空格。 执行标准:强制正例:!valuevalue+countnumberi = 5;box.getWidth(); 【规则1-3-3】多元运算符和它们的操作数之间至少需要一个空格。说明:空格的多少根据上下文调整。执行标准:建议 正例:value = oldValue;total + valuenumber += 2; 【规则1-3-4】方法名之后不要留空格。说明:方法名后紧跟左括号(。执行标准:建议【规则1-3-5】(向后紧跟,)、, 、;向前紧跟,紧跟处不留空格。,之后要留空格。;不是行结束符号时其后要留空格。执行标准:建议正例:例子中的 凵 代表空格。 for (i凵=凵0;凵i凵凵MAX_BSC_NUM;凵i+)doSomething(width,凵height);【规则1-3-6】注释符与注释内容之间要用一个空格进行分隔。执行标准:建议正例:/* 注释内容 */ 注释内容反例: /*注释内容*/注释内容(四)断行【规则1-4-1】长表达式(超过120列)要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐。执行标准:建议说明:断行方法:1. 在逗号后断行2. 在操作符前断行3. 较高级别断行优于较低级别的断行对齐方法:1. 将新行与同一级别的先前行的表达式的起始端对齐。2. 条件表达式的续行在第一个条件处对齐。3. for循环语句的续行在初始化条件语句处对齐。4. 函数调用和函数声明的续行在第一个参数处对齐。5. 赋值语句的续行应在赋值号处对齐。6. 如果上述规则导致代码排列混乱或代码左边界少于两个缩进,可用两倍缩进替 代。下面是一些断行方法调用的示例:正例: someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5); var = someMethod1(longExpression1, someMethod2(longExpression2, longExpression3);下面是两个断行算术表达式例子,第一个是优选方法,因为断行出现在括号表达式之外,属于较高级别的断行。正例: longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; /允许的断行方法反例: longName1 = longName2 * (longName3 + longName4-longName5) + 4 * longname6; /应该避免的断行方法下面是两个缩排方法的例子,第一个是传统的方式,第二个例子中如果采用传统方式缩排将导致第二行和第三行右边出现太多空白,因此,采用8个空格符替代。/传统的缩排方法,第二行与第一行的括号对齐。正例: someMethod(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./你代码的位置/由8个空格符来替代与括号对齐的方法,以避免第二行、第三行出现太多的空格符正例: private static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./你代码的位置对于if语句的行封装通常使用8空格规则,因为传统的4空格缩排方式使得有些语句容易被忽略掉,使if语句体难以理解。例如:反例: /不允许使用下面的缩进方法if (condition1 & condition2) | (condition3 & condition4) | !(condition5 & condition6) /不好的缩进 doSomethingAboutIt(); /这样对齐的缩进方式很容易让阅读的人忽略掉这一行正例: /宜采用下面的缩进方法(分成三行的情况)if (condition1 & condition2) | (condition3 & condition4) | !(condition5 & condition6) doSomethingAboutIt();/或使用下面的缩进方法(分成二行的情况)正例: if (condition1 & condition2) | (condition3 & condition4) | !(condition5 & condition6) doSomethingAboutIt();对于三重表达式,有三种方式可以对它进行换行缩排:正例: /单行的情况 alpha = (aLongBooleanExpression) ? beta : gamma;/分成两行的情况,第二行的冒号与第一行的问号对齐。 alpha = (aLongBooleanExpression) ? beta : gamma;/分成三行的情况,第二行的问号和第三行的冒号都与第一行的括号对齐 alpha = (aLongBooleanExpression) ? beta : gamma;【规则1-4-2】方法声明时,修饰符、类型与名称不允许分行书写。执行标准:强制正例:public static double calculateArea(double width, double height);反例:public static double calculateArea(double width, double height);四 注释 注释有助于理解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有用、额外的信息,而不是代码表面意义的简单重复。C#注释的方式有:行注释:“/ 注释内容”和“/* 注释内容 */”两种注释形式。XML标记注释:“/ 注释内容” 分成多行书写的形式.一般类私有变量的声明采用行注释。类、接口、构造函数、方法、属性、公共变量等的声明采用XML标记注释【规则2-1】注释使用中文注释。与XML标记有关的标准英文单词标签保留。 说明:在 C# 中,可以将使用 XML 编写的代码文档化。C# 是 Visual Studio.NET 中唯一具有此项功能的编程语言。XML注释标记可查看主要注释标签: : 标记应当用于描述类型或类型成员。 标记应当用于方法声明的注释中,以描述方法的一个参数。 标记用于添加有关某个类型的信息,从而补充由 所指定的信息。 标记应当用于方法声明的注释,以描述返回值。 标记可以指定使用方法或其他库成员的示例。/zh-cn/library/b2s063f7(VS.80).aspx 执行标准:强制【规则2-3】公共方法前面应进行XML标记注释,列出:函数的目的/功能、输入参数、返回值等。执行标准:强制说明:注释必须列出:功能描述、输入参数、返回值等,对于成员属性的get/set操作可以不加注释。正例:下面是公共方法头部的注释: / / 添加列/ / 列名/ 值public void AddColumn(string column,string value)AddColumn(column,value,DbType.String);【规则2-4】保证代码和注释的一致性。修改代码的同时修改相应的注释,不再有用的注释要删除。 执行标准:强制【规则2-5】注释应与其描述的代码相近,对代码的注释应放在其上方(需与其上面的代码用空行隔开)或右方(对单条语句的注释)相邻位置,不可放在下面。说明:在使用缩写时或之前,应对缩写进行必要的说明。执行标准:强制正例: 如下书写结构比较清晰/ 获得子系统索引 subSysIndex = data.getSysIndex;/ 代码段1注释 代码段1 /* 代码段2注释 */ 代码段2 反例1: 如下例子注释与描述的代码相隔太远。/* 获得子系统索引 */subSysIndex = subSys.getSysIndex();反例2:如下例子注释不应放在所描述的代码下面。subSysIndex = subSys.getSysIndex();/* 获得子系统索引 */反例3:如下例子,显得代码与注释过于紧凑。/* 代码段1注释 */ 代码段1 /* 代码段2注释 */ 代码段2 【规则2-6】注释与所描述内容进行同样的缩进。执行标准:建议说明:这样可使程序排版整齐,并方便注释的阅读与理解。正例: 如下注释结构比较清晰int doSomething()/* 代码段1注释 */ 代码段1 /* 代码段2注释 */ 代码段2 反例:如下例子,排版不整齐,阅读不方便;int doSomething()/* 代码段1注释 */ 代码段1 /* 代码段2注释 */ 代码段2 【规则2-7】if-else中注释的位置采用右边的方式,可以避免条件过长的时候,注释太靠后,也可以避免和代码块中的注释混在一起。执行标准:建议正例:if() /分支条件描述else if() /分支条件描述else /分支条件描述(如无特别情况,可以不写)五 命名规则 好的命名规则能极大地增加可读性和可维护性。同时,对于一个有上百个人共同完成的大项目来说,统一命名约定也是一项必不可少的内容。本章对程序中的所有标识符(包括包、变量名、常量名、方法名、类名等)的命名做出约定。对同一个项目内应使用统一的词汇表。【规则3-1】遵循统一的规范来书写命名空间的声明,必须以SinoLink.XXX开头。 说明:对于命名空间的声明,要遵循统一的命名规范来对命名空间进行定义,所有的程序命名空间都应以SinoLink.XXX开头,SinoLink代表公司的名称,XXX代表平台的名称,后面可根据项目或者模块名称定义新的命名空间 执行标准:强制 正例:namespace SinoLink.XXX.Data;【规则3-2】命名空间的名称若是由两个或者更少字母组成的则所有的字母为大写,若是由三字符或更多字符组成则首字母和后面连接的每个单词的首字母都大写。 执行标准:强制正例: namespace SinoLink.XXX.DataModel; namespace SinoLink.XXX.UI;【规则3-3】类名采用大小写结合的方法,构成类名的每个单词的首字母也必须大写。在构成类名的单词之间不用下划线。有特殊情况需要说明。说明: 使用名词或名词短语命名类。 少用缩写。 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream。 不要使用下划线字符 (_)。 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。 执行标准:强制正例:public class FileStreampublic class Buttonpublic class String【规则3-4】接口命名统一以I开头。 说明: 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。 少用缩写。 给接口名称加上字母 I 前缀,以指示该类型为接口。 在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称 的区别应该只是接口名称上有字母 I 前缀。 不要使用下划线字符 (_)。 执行标准:强制正例:public interface IServiceProviderpublic interface IFormatable【规则3-5】变量标识符只能由26个英文字母,10个数字及下划线的一个子集来组成,并严格禁止使用连续的下划线,必须用一个小写字母开头。后面的单词用大写字母开头。建议用户定义的标识符下划线不能出现在标识符的头尾。说明:这样做的目的是为了使程序易读。因为 variable_name 和 variable_name 很难区分。执行标准:强制正例:NetSegDlg netSegDlg = null;【规则3-6】变量标识符应当使用完整的英文描述,标识符的命名应当符合“min-length & max-information”原则,谨慎使用缩写。说明:对于标识符应当使用完整的英文进行描述,对于整个描述较长的,可对单词进行缩略。较短的单词可通过去掉“元音”形成缩写,较长的单词可取单词的头几个字母形成缩写,一些单词有大家公认的缩写,常用单词的缩写必须统一。协议中的单词的缩写与协议保持一致。对于某个系统使用的专用缩写应该在某处做统一说明。设计命名中应该慎用缩写命名。如要采用,则应采用统一的缩略规则,并且在代码的相应部分统一采用缩写。例如,采用num作为number的缩写,那么在整个代码中应该始终使用该缩写。执行标准:参考正例:如下单词的缩写能够被大家认可: temp 可缩写为 tmp ; flag 可缩写为 flg ; statistic 可缩写为 stat ; increment 可缩写为 inc ; message 可缩写为 msg ;以下是一些常用缩写: 常用词缩写argumentargbufferbufclearclrclockclkcomparecmpconfigurationcfgcontextctxdelaydlydevicedevdisabledisdisplaydispenableenerrorerrfunctionfncthexadecimalhexinitializeinitmailboxmboxmanagermgrmaximummaxmessagemsgminimumminmultiplexmuxoperating systemOSparameterparampreviousprevpriorityprioreadrdreadyrdyregisterregscheduleschedsemaphoresemstackstksynchronizesynctimertmrtriggertrigwritewr【规则3-7】程序中不要出现仅靠大小写区分的相似的标识符。 说明:命名时应避免采用几乎相同的名称。例如,anSqlDatabase和anSQLDatabase也不应同时使用。 执行标准:强制 【规则3-8】一般变量名不得取单个字符(如i、j、k等)作为变量名,局部循环变量除外。说明:变量,尤其是局部变量,如果用单个字符表示,很容易出错(如l误写成1),而编译时又检查不出,则有可能增加排错时间。变量的命名应当选择精炼、意义明确的名字,才能简化程序语句,改善对程序功能的理解。执行标准:强制【规则3-9】常量名都要使用大写字母, 用下划线 _ 分割单词。 正例:public const int MIN_WIDTH = 4; 执行标准:强制【规则3-10】控件命名应采用完整的英文描述符命名,名字的前缀是控件类型名。 说明:这样容易区分一个控件的目的和它的类型,容易在一个表里找到各个控件。执行标准:强制正例:btnOklistCustomer 【规则3-11】方法名应当能体现方法的作用,必须用大写字母开头的单词组合而成,且应当使用“动词”或者“动词名词”(动宾词组)。说明:方法名力求清晰、明了,通过方法名就能够判断方法的主要功能。多个单词组合而成的方法名中,单词采用大小写字母结合的形式(首字母大写),但专有名词不受限制。单词间不用下划线连接。执行标准:建议正例:public void SetIpType(int ipType) this.ipType = ipType;【规则3-12】获取性方法的命名有两类,一种是判断性的操作(获取属性的状态,返回值为boolean),如判断某些控件的状态等,对于这些操作,应当是以Is为方法声明的开头。另外一种是获取返回值的操作,对一这种操作,应当以Get开头。执行标准:建议正例:GetFirstName()GetAccountNumber()IsPersistent()IsAtEnd()【规则3-13】属性名与方法名命名规范一致。属性名应考虑用与属性的基础类型相同的名称创建属性。例如,如果声明名为 Color 的属性,则属性的类型同样应该是 Color。执行标准:建议 正例: public Color BackColor / Code for Get and Set accessors goes here. 反例: public int BackColor /BackColor属性为Integer类型 / Code for Get and Set accessors goes here. 【规则3-14】参数的命名和变量的命名规范一致。使用有意义的参数命名,而不要使用描述参数的类型的名称。对于对数据类的属性的赋值方法用和要赋值的字段一样的名字。执行标准:建议正例:public void SetIpType(int ipType) this.ipType = ipType;【规则3-15】事件的名称必须用大写字母开头的单词组合而成。并使用EventHandler后缀,指定两个名为sender和e的参数,同时考虑使用动词命名事件。说明:事件名力求能表现该事件的真实含义。事件的两个参数,sender 参数表示引发事件的对象。sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装在名为 e 的事件类的实例中。对 e 参数类型使用适当而特定的事件类,并用 EventArgs 后缀命名事件参数类。使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。例如,可以取消的 Close 事件应当具有 Closing 事件和 Closed 事件。不要使用 BeforeXxx/AfterXxx 命名模式。不要在类型的事件声明上使用前缀或者后缀。例如,使用 Close,而不要使用 OnClose。 执行标准:强制正例:public delegate void MouseEventHandler(object sender, MouseEventArgs e);【规则3-16】用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。执行标准:参考说明:下面是一些在软件中常用的反义词组。 add / remove ; begin / end ; create / destroy ; insert / delete ; first / last ; get / set ; increment / decrement ; put / get ; add / delete ; lock / unlock ;open / close ; min / max ; old / new ; start / stop ;next / previous ;source / target ; show / hide ; send / receive ;source / destination ;cut / paste ; up / down【规则3-17】控件变量命名,按照规范,如控件的缩写,详见“常用控件前缀缩写说明”,变量首字母小写。执行标准:参考控件说明前缀正例Button按钮btnbtnNewCheckBox选择框chkchkClearAllCheckListBox选择列表框chklistchklistUserLabel标签框lablabNameListBox列表框list(or listbox)listboxUserTextBox文本框texttextUserComobox下拉框cmbcmbUserDataGrid数据表gridgridMainData六 声明【规则4-1】一行只声明一个变量。执行标准:建议正例: int level; int size;反例: int level, size;【规则4-2】一个变量有且只有一个功能,不能把一个变量用于多种用途。执行标准:强制反例: void myMethod() boolean myFlag = false; myFlag = isVisible(myView)/作为可见性判断标志 /使用myFlag做其它操作 myFlag = isEnable(myComponent)/作为可用性判断标志 七 表达式与语句表达式是语句的一部分,它们是不可分割的。表达式和语句虽然看起来比较简单,但使用时隐患比较多。本章归纳了正确使用表达式和if、for、while、switch等基本语句的一些规则与建议。【规则5-1】每一行应该只包括一个语句。说明:复杂的语句阅读起来难于理解,并容易隐含错误。执行标准:强制正例:argv+; 反例:argv+; argc-;if(s4 = null) s4 = “Joy”;【规则5-2】在表达式中使用括号,使表达式的运算顺序更清晰。说明:由于将运算符的优先级与结合律熟记是比较困难的,为了防止产生歧义并提高可读性,即使不加括号时运算顺序不会改变,也应当用括号确定表达式的操作顺序。执行标准:建议正例:if (iYear % 4 = 0) & (iYear % 100 != 0) | (iYear % 400 = 0)反例:if (iYear % 4 = 0 & iYear % 100 != 0 | iYear % 400 = 0)【规则5-3】当复合语句作为控制流程的一部分时,应该用 把所有的复合语句括起来,即使只有一句简单语句。说明:这样可以更方便地加入语句而不会由于忘掉加括号而引起的偶然性的错误。执行标准:强制正例:int count;.myMethod() if (condition) count = 1; 【规则5-4】在switch语句中,每一个case分支必须使用break结尾,最后一个分支必须是default分支。说明:避免漏掉break语句造成程序错误。有时编程逻辑需要,可以几个case语句共用一个语句块,对这种情况必须加注释进行说明。有return语句的特殊情况除外。 执行标准:强制正例: switch (iMessage)case SPAN_ON: 处理语句 break; case SPAN_OFF: 处理语句 break; default: 处理语句break;【规则5-5】不要使用过多的if/else if分支,建议3个以上的判断使用switch语句 说明:过多的if /else if分支会增加程序阅读困难,程序逻辑错误的可能。执行标准:建议反例:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微生物检验挑战与机遇分析及试题及答案
- 叉车司机述职报告范文
- 秋季小学二年级班主任工作计划范文(30篇)
- 银行工作员个人年终总结(3篇)
- 注册会计师考试细节注意试题及答案
- 微生物检验技术进步的实际影响试题及答案
- 项目管理中的变更审批流程考点试题及答案
- 提升微生物检验能力的策略与方法试题及答案
- 项目管理能力培养试题及答案
- 2025年证券从业资格证考试中使用的数学技巧分析试题及答案
- 2024工业机器人考试题库(含答案)
- 2024年第九届全国大学生人力资源管理综合能力竞赛选拔赛考试题库(含答案)
- 2024年江苏省常州市中考一模英语试卷(含答案解析)
- 医疗设备(耗材)配送整体计划方案投标方案
- 小学生中医药文化知识科普传承中医文化弘扬国粹精神课件
- 2024年福建省中考历史试卷(含标准答案及解析)
- 消防维保公司劳动合同
- 2024年4月贵州省自考00995商法(二)试题及答案含评分参考
- 以竹代塑的挑战与对策
- 2024年美国商用车和乘用车市场现状及上下游分析报告
- 幼儿园语言故事《阿里巴巴和四十大盗》课件
评论
0/150
提交评论