版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 CMMICMMI ML-3ML-3 v1.2v1.2 JAVAJAVA 语言编码规范语言编码规范(TS)(TS) 文件编号: TS-G-06 编制日期 审核日期 批准日期 变更记录变更记录 版本号变更日期 变更类 型 变更人变更摘要备注 目目 录录 1.排版规范排版规范.4 1.1.缩进 .4 1.2.空行 .4 1.3.分行 .4 1.4.分界符 .6 1.5.空格 .7 1.6.其他 .7 2.命名规范命名规范.8 2.1.大小写规则 .8 2.2.命名统一 .8 2.3.命名空间 .9 2.4.措词 .10 3.语句规范语句规范.12 3.1.简单语句 .12 3.2.复合语句 .12
2、 3.3.SWITCH语句.12 4.注释规范注释规范.14 4.1.文件注释 .14 4.2.文档型注释 .15 4.3.类 C 注释.15 4.4.注释格式 .16 4.5.函数注释 .18 5.控件命名规则控件命名规则.20 5.1.命名方法 .20 5.2.主要控件名简写对照表 .20 6.附录附录.22 6.1.注释标签 .22 6.2.PASCAL、CAMEL和匈牙利命名法.24 1. 排版规范排版规范 1.1. 缩进缩进 程序块要采用缩进风格编写,缩进的长度为 4 个空格,方式为 IDE 自动 缩进或 TAB 缩进。一行程序以小于 110 字符为宜,不要写得过长。对于由 开发工具
3、自动生成的代码可以有不一致。函数或过程的开始、结构的定义 及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理 语句也要遵从语句缩进风格。 1.2. 空行空行 空行将逻辑相关的代码段分隔开,以提高可读性。 下列情况应该总是使用两个空行: 1) 一个源文件的两个片段(section)之间。 2) 类声明和接口声明之间。 下列情况应该总是使用一个空行: 1) 两个方法之间。 2) 方法内的局部变量和方法的第一条语句之间。 3) 块注释或单行注释之前。 4) 一个方法内的两个逻辑段之间,用以提高可读性 1.3. 分行分行 当语句超出或即将超出规定的列宽,遵循以下规则进行换行: 1)
4、 在逗号后换行。 2) 在运算符,关键字前换行。 3) 选择在较高级别(higher-level)的运算符处断开。 4) 新的一行应该与上一行同一级别表达式的开头处对齐。 5) 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边, 那就代之以缩进 8 个空格。 6) 规则 1 优先于规则 2。 7) 当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。 示例: someMethod(longExpression1, longExpression2, longExpression3,longExpression4, longExpression5); Object obj = someM
5、ethod1(longExpression1, someMethod2(longExpression2, longExpression3); 以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表 达式的外边,这是个较高级别的断开: longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; /PREFFER longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; /avoid 以下是两个缩进方法
6、声明的例子。前者是常规情形。后者若使用常规的 缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进 8 个空格: /CONVENTIONAL INDENTATION someMethod(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) . /INDENT 8 SPACES TO AVOID VERY DEEP INDENTS private static synchronized horkingLongMethodName(int anArg, Object anotherArg, Str
7、ing yetAnotherArg, Object andStillAnother) . if 语句的换行通常使用 8 个空格的规则,因为常规缩进(4 个空格)会使 语句体看起来比较费劲。比如: /DONT USE THIS INDENTATION if (condition1 /MAKE THIS LINE EASY TO MISS /USE THIS INDENTATION INSTEAD if (condition1 /OR USE THIS if (condition1 这里有三种可行的方法用于处理三元运算表达式: alpha = (aLongBooleanExpression) ?
8、beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; 1.4. 分界符分界符 程序块的分界符(如 C/C+语言的大括号和 )应各独占一行 并且位于同一列,同时与引用它们的语句左对齐。 在函数体的开始、类的定义、结构的定义、枚举的定义以及 if、for、do、while、switch、case 语句中的程序都要采用如上的缩进方 式。 示例: for (.) . / program code if (.) . / program
9、code else . / program code void example_fun( void ) . / program code 1.5. 空格空格 1. 关键字后需要有空格 2. 运算符前后要有空格 3. 功能段之间可以适当使用空格 4. 要遵循手写英语中标点符号的规范, , 和 ; 后要加空格, ( 除外, 例如: background = new Color(red, green, blue); 在操作符前后可以使用空格使代码增强代码可读性。 对于与英文意义不同的操作符不遵循上述规则,例如:.后不用空格。 1.6. 其他其他 每行只能写一条代码,且厂度不超过 80 个字符; 设计
10、常量判断语句要把常量放左边,这样可以防止把 = = 写成 = ; 所有新变量在第一次使用都要进行初始化; 对有返回值的函数要对返回值进行判断; 涉及到锁问题都需要成对的出现; 2.命名规范命名规范 2.1. 大小写规则大小写规则 大写标识符中的所有字母都大写。仅对于由两个或者更少字母组成的标 识符使用该约定。 例如: System.IO System.Web.UI 下表汇总了大写规则,并提供了不同类型的标识符的示例。 标示符大小写示例 类 PascalAppDomain 枚举类型 PascalErrorLevel 枚举值 PascalFatalError 事件 PascalValueChang
11、e 异常类 Pascal WebException (总是以 Exception 后缀结尾。 ) 只读的静态字段 PascalRedValue 接口 Pascal IDisposable (总是以 I 前缀开始。 ) 方法 PascalToString 命名空间 PascalSystem.Drawing 属性 PascalBackColor 公共实例字段 Pascal RedValue (很少使用, 属性优于使用公共实例字段。) 受保护的实例字段 Camel redValue (很少使用,属性优 于使用受保护的实例字段。 私有的实例字段 CamelredValue 参数 CameltypeNa
12、me 方法内的变量 CamelbackColor 2.2. 命名统一命名统一 己特有的命名风格,要自始至终保持一致,不可来回变化。个人的命名 风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。 (即命 名规则中没有规定到的地方才可有个人命名风格) 。用正确的反义词组命名 具有互斥意义的变量或相反动作的函数等。 示例面是一些在软件中常用的反义词组: add / remove begin / end create / destroy insert / delete first / last get / release increment / decrement put / get add
13、 / 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 get / set 示例: int min_sum; int max_sum; int add_user( BYTE *user_name ); int delete_user( BYTE *user_name ); 2.3. 命名空间命名空间 1) 命名
14、命名空间时的一般性规则是使用公司名称,后跟技术名称和可选 的功能与设计,如下所示: CompanyName.TechnologyName.Feature.Design 例如: namespace Langchao.Procurement /浪潮公司的采购单管理系 统 /*浪潮公司的采购单管理系统的业务规则模块*/ namespace Langchao.Procurement.DataRules 2) 命名空间使用 Pascal 大小写,用逗号分隔开。 3) TechnologyName 指的是该项目的英文缩写,或软件名。 4) 命名空间和类不能使用同样的名字。例如,有一个类被命名为 Debug
15、 后,就不要再使用 Debug 作为一个名称空间名。 2.4. 措词措词 避免使用与常用的 .NET 框架命名空间重复的类名称。 例如,不要将以下任何名称用作类名称: System、Collections、Forms 或 UI。 (有关 .NET 框架命名空间的列表,请参阅类库。 ) 另外,避免使用和以下关键字冲突的标识符: AddHandlerAddressOfAliasAndAnsi AsAssemblyAutoBaseBoolean ByRefByteByValCallCase CatchCBoolCByteCcharCDate CDecCDblCharCintClass CLngCOb
16、jConstCshortCSng CStrCTypeDateDecimalDeclare DefaultDelegateDimDoDouble EachElseElseIfEndEnum EraseErrorEventExitExternalSource FalseFinalizeFinally FloatFor FriendFunctionGetGetTypeGoto HandlesIfImplementsImportsIn InheritsIntegerInterfaceIsLet LibLikeLongLoopMe ModModuleMustInheritMustOverrideMyBa
17、se MyClassNamespaceNewNextNot NothingNotInheritableNotOverridableObjectOn OptionOptionalOrOverloadsOverridable OverridesParamArrayPreservePrivateProperty ProtectedPublicRaiseEventReadOnlyReDim RegionREMRemoveHandlerResumeReturn SelectSetShadowsSharedShort SingleStaticStepStopString StructureSubSyncL
18、ockThenThrow ToTrueTryTypeOfUnicode UntilvolatileWhenWhileWith WithEventsWriteOnlyXorEvalextends instanceofpackagevar 3. 语句规范语句规范 3.1. 简单语句简单语句 每行至多包含一条语句,例如: argv+; / 正确 argc-; / 正确 argv+; argc-; / 避免! 3.2. 复合语句复合语句 复合语句是包含在大括号中的语句序列,形如 语句 。被括其中的 语句应该较之复合语句缩进一个层次。 1) 左大括号应由复合语句首行另起一行并与其对齐;右大括号 应另起一
19、行并与复合语句首行对齐。 2) 大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如 if-else 或 for 控制结构的一部分。这样便于添加语句而无需担心 由于忘了加括号而引入 bug。 示例: If(condition) Statements; 3.3. switch 语句语句 一个 switch 语句应该具有如下格式: switch (condition) case ABC: statements; /* falls through */ case DEF: statements; break; case XYZ: statements; break; default: stat
20、ements; break; 每当一个 case 顺着往下执行时(因为没有 break 语句),通常应在 break 语句的位置添加注释。上面的示例代码中就包含注释/* falls through */。 4.注释规范注释规范 4.1. 文件注释文件注释 文件头部应进行注释,注释必须列出:版权说明、版本号、生成日期、 作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还 应有函数功能简要说明。 示例:下面这段文件注释比较标准,当然,并不局限于此格式,但上述 信息建议要包含在内。 /* Copyright (C), 19xx-20 xx Infocore. Co. Ltd. File
21、 name: / 文件名 Author: Version: Date: / 作者、版本及完成日期 Description: / 用于详细说明此程序文件完成的主要功能,与其 他模块 / 或函数的接口,输出值、取值范围、含义及 参数间的控 / 制、顺序、独立或依赖等关系 Function List: / 主要函数列表,每条记录应包括函数名及功能简 要说明 1. . History: / 修改历史记录列表,每条修改记录应包括修改日 期、修改 / 者及修改内容简述 1. Date: Author: Modification: 2. . */ 4.2. 文档型注释文档型注释 该类注释采用.Net 已定义
22、好的 Xml 标签(参见附录 7.1)来标记,在声 明接口、类、方法、属性、字段都应该使用该类注释,以便代码完成后直 接生成代码文档,让别人更好的了解代码的实现和接口。 示例: /MyMethod is a method in the MyClass class. /Heres how you could make a second paragraph in a /description. / /for information about output statements. / / / public static void MyMethod(int Int1) . 4.3. 类类 C 注释注
23、释 该类注释用于: 1) 不再使用的代码。 2) 临时测试屏蔽某些代码。 用法: /* 修改人 修改时间 修改原因 . . . (the source code ) */ 4.4. 注释格式注释格式 程序可以有 4 种实现注释的风格:块(block)、单行(single-line)、尾 端(trailing)和行末(end-of-line)。 1) 块注释 块注释通常用于提供对文件,方法,数据结构和算法的描述。块注 释被置于每个文件的开始处以及每个方法之前。它们也可以被用于 其他地方,比如方法内部。在功能和方法内部的块注释应该和它们 所描述的代码具有一样的缩进格式。 块注释之首应该有一个空行,
24、用于把块注释和代码分割开来,比如: /* * Here is a block comment. */ 块注释可以以/*-开头,这样 indent(1)就可以将之识别为一个代码 块的开始,而不会重排它。 /*- * Here is a block comment with some very special * formatting that I want indent(1) to ignore. * * one * two * three */ 注意:如果你不使用 indent(1),就不必在代码中使用/*-,或为他 人可能对你的代码运行 indent(1)作让步。 2) 单行注释 短注释可以
25、显示在一行内,并与其后的代码具有一样的缩进层级。 如果一个注释不能在一行内写完,就该采用块注释。单行注释之前 应该有一个空行。以下是一个 Java 代码中单行注释的例子: if (condition) /* Handle the condition. */ . 3) 尾端注释 极短的注释可以与它们所要描述的代码位于同一行,但是应该有足 够的空白来分开代码和注释。若有多个短注释出现于大段代码中, 它们应该具有相同的缩进。 以下是一个 Java 代码中尾端注释的例子: if (a = 2) return TRUE; /* special case */ else return isPrime(a)
26、; /* works only for odd a */ 4) 注释界定符 注释界定符/,可以注释掉整行或者一行中的一部分。它一般不 用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代 码段。以下是所有三种风格的例子: if (foo 1) / Do a double-flip. . else return false; / Explain why here. /if (bar 1) / / / Do a triple-flip. / . / /else / / return false; / 4.5. 函数注释函数注释 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、
27、 返回值、调用关系(函数、表)等。 下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息 建议要包含在内。 /* * Function: / 函数名称 * Description: / 函数功能、性能等的描述 * Parameter: / 输入输出参数说明,包括每个参数的作 * / 用、取值说明及参数间关系。 * Return: / 函数返回值的说明 * Summary: /说明实现的算法与注意之处. * History: /谁在什么时间对这个函数作了什么样的修改,修改的原因 * Others: /其他的说明 */ 5. 控件命名规则控件命名规则 5.1. 命名方法命名方法 控件名简
28、写+英文描述,英文描述首字母大写。 5.2. 主要控件名简写对照表主要控件名简写对照表 控件名控件名简写简写 Labellbl Buttonbtn ImageButtonimgbtn ListBoxlst DataListdl CheckBoxListchkls RadioButtonListrdolt Panelpnl AdRotatorar RequiredFieldValidator rfv RangeValidatorrv ValidatorSummaryvs TextBoxtxt LinkButtonlnkbtn DropDownList ddl DataGriddg CheckBo
29、xchk RadioButtonrdo Imageimg Calendercld Tabletbl CompareValidatorcv RegularExpressionValidatorrev CrystalReportViewerrptvew 6. 附录附录 6.1. 注释标签注释标签 标签用法作用 ctext text 希望将其指示为代码的文本。 为您提供了一种将说明中的文本 标记为代码的方法。使用 将多行指示为代码 content content 段落文本。 用于诸如 或 等标记内,使您得以 将结构添加到文本中。 description name 为方法参数名。将此名称用单引号括 起
30、来 ( )。 应当用于方法声明的注释中,以 描述方法的一个参数。 name 要引用的参数名。将此名称用双引号括起来 ( )。 标记为您提供了一种 指示词为参数的方法。可以处理 XML 文件,从而用某种独特的方 法格式化该参数。 cref = member 对可以通过当前编译环境 进行调用的成员或字段的引用。编译器检查 到给定代码元素存在后,将 member 传递给 输出 XML 中的元素名。必须将 member 括 在双引号 ( ) 中。 使您得以从文本内指定链接。使 用 指示希望在“请参 阅”一节中出现的文本。 cref = member 对可以通过当前编译环境 进行调用的成员或字段的引用。
31、编译器检查 到给定代码元素存在后,将 member 传递给 输出 XML 中的元素名。必须将 member 括 在双引号 ( ) 中 使您得以指定希望在“请参阅” 一节中出现的文本。使用 从文本 description description 代码示例的说明。 使用 标记可以指定使 用方法或其他库成员的示例。一 般情况下,这将涉及到 标记的使用。 content content 为希望将其标记为代码的文本。 记为您提供了一种将多行指示为 代码的方法。使用 指示应将 说明中的文本标记为代码 description 此处 description 为对象的摘要。 应当用于描述类型成员。使用 以提供有
32、关类型本身 的信息。 description cref = member 对可从当前编译环境中获 取的异常的引用。编译器检查到给定异常存 在后,将 member 转换为输出 XML 中的规 范化元素名。必须将 member 括在双引号 ( ) 中。 description 说明。 标记使您可以指定 类能够引发的异常。 filename 包含文档的文件名。该文件名可 用路径加以限定。将 filename 括在单引号 中 ( )。 Tagpath:filename 中指向标记名的标记路 径。将此路径括在单引号中 ( )。 name 注释前边的标记中的名称说明符;名 称具有一个 id。 id 位于注释之前的标记的 id。将此 id 括在 双引号中 ( )。 标记使您得以引用描 述源代码中类型和成员的另一文 件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制药人员GMP培训管理手册
- 诊疗环节差错防控管理制度
- 污水厂污泥处理环保验收报告
- 项目交付验收工作方案
- 危险化学品仓储安全管理规范
- 算力租赁项目管理制度
- 市政给水管网设计规范
- 施工安全应急预案
- 人防工程地下结构施工方案
- 燃气管道地下作业防护方案
- 无粘结预应力钢绞线施工方案及工艺方法
- 【世界经济论坛】塑造学习的未来:人工智能时代的教育准备
- 2026年高考(浙江卷)历史试题及答案
- 电商运营流程与管理制度
- 痰湿体质的中医护理
- 2023-2024学年北京市海淀区九年级(上)期末数学试卷(含解析)
- DIY甜品创业计划书
- 心内科导管室进修汇报
- 微结构眼镜镜片 微透镜阵列镜片
- 无菌操作技术培训课件
- 炉渣厂安全知识培训内容课件
评论
0/150
提交评论