C02-AD-0102 设计规范(NCV6编码规范)-精品文档资料整理.docx
《C02-AD-0102 设计规范(NCV6编码规范)-精品文档资料整理.docx》由会员分享,可在线阅读,更多相关《C02-AD-0102 设计规范(NCV6编码规范)-精品文档资料整理.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、NC6.0编码规范1. 介绍22.文件和目录31.12.1 NC目录结构31.22.2 一般命名原则41.32.3 多语资源41.42.4 属性文件41.52.5 XML和组件配置文件43.JAVA代码规范51.63.1 命名规范51.6.13.1.1 一般性规则51.6.23.1.2 常量命名51.6.33.1.3变量命名51.6.43.1.4方法命名61.6.53.1.5类和接口的命名61.6.63.1.7包的命名61.6.73.1.8 接口设计规范71.73.2 注释规范91.7.13.2.1 一般性规则91.7.23.2.2 注释分类101.7.33.2.3 类/接口注释111.7.4
2、3.2.4变量注释121.7.53.2.5 方法注释121.7.63.2.6 算法注释131.7.73.2.7 修改记录134.编码规范131.84.1基本原则131.94.2类编写规范141.104.3变量151.114.4方法161.124.5 语言使用及书写规范161.134.6 测试用例161. 介绍软件开发涉及到各方面人员的交互、协作,为了有效地进行项目开发的沟通,完善代码的维护和交付,有必要在一个小组中采用统一的软件开发标准。一般来说,制定这样的标准有下列好处: 方便软件维护。据统计,80的软件开发费用在维护,规范化的代码才方便维护,降低维护成本。 在软件的整个生命期内,期望一个编
3、码人员从开始到该软件报废一致维护其代码是不现实的,必然需要不断地交付、协同 好的编码规范能够大大增强代码的可读性,便于开发人员快速的理解新代码。 任何产品都需要好的包装。我们可以把代码本身看作是一种产品,那么按照规范编程也是对这个“产品”的包装 规范化的代码也是软件质量的保证手段之一,也是软件过程能够流畅的基础。我们每个人必须牢牢树立这样的观念:无论从时间跨度还是从工作量来说,一个软件系统生存期的大部分是维护,不是开发。你今天所编写的代码,会一直使用很多年,并且很有可能被其他人维护和改进。所以,我们必须努力写出“干净”和易读的代码。本文档适用于软件开发过程中开发人员,主要包括编码人员、测试人员
4、,开发人员,规范必须严格遵守,否则程序被视为不合格程序。注:本规范中加黑加下划线部分是强制执行规范,请严格遵守。2.文件和目录1.1 2.1 NC目录结构 ierp: 所有产品共用的一些全局配置文件存放目录 webapps: NC产品的主web应用部署目录 hotwebs: NC产品的扩展web应用存放目录 ejb: NC中间件jar包存放目录 ejbXMLs:NC中间件ejb描述文件存放目录 scripts: 数据库脚本存放目录 nclogs: 系统日志存放目录 external,lib,framework,middleware客户化基础技术平台提供的一些jar包 langlib: 多语ja
5、r包 ierp/bin: 与整个产品相关的配置文件都存放在该目录,如日志配置文件logger-confing.properties modules: 各产品模块的部署目录n : 某个模块的目录,模块名必须是小写的英文字母,在能表达意义的基础上尽量的短n /META-INF/module.xml: 必须存在,配置模块的一些通用属性,如名称,描述,classloader等,注意名称必须与模块名称同名n /lib: 模块公开的API类,如接口,接口相关的VO等,放JAR包n /classes:模块公开的API类,如接口,接口相关的VO等,放带目录的.class文件等,用于补丁n /META-INF/
6、lib: 模块私有的代码,如DMO, 业务实现等,放JAR包n /META-INF/classes:模块私有的代码,放带目录的.class文件等,用于补丁n /extension/lib,classes: 用于二次扩展的公开的APIn /extension/META-INF/lib,classes:用于二次扩展的私有的APIn /client/lib,classes: 用于从目标上来说不属于公共的API,但是客户端用到的代码n / config:产品模块自己的配置文件 webappsnc_webimages :NC产品模块的图像文件 lib, classes, external/lib, cl
7、asses: 由平台维护和提供的类库,不允许第三方调整1.2 2.2 一般命名原则 文件、目录命名不能用中文,推荐使用数字和英文字母构成,只能使用数字和英文字母,不能以数字开头 文件、目录命名需要有一定的意义,尽量简短,名称符合各种主流操作系统的要求,如不要使用空格,不以”.”开头,不使用过长的文件名 文件名称的分隔,使用下划线或者采用首单词小写,其余单词首字母大写的方式分隔1.3 2.3 多语资源 多语资源文件的中文简体字符集必须用GBK编码,繁体及其他必须用UTF-16编码,英文是UTF-8 多语资源可以以JAR包形式存放在NC_HOME下的langlib目录下,JAR包名称必须以_lan
8、gres.jar结尾,或以目录方式存在NC_HOME的resources下 多语资源的结构组织如下:lang/语种编码/多语类别/多语资源文件,语种编码参考ierp/bin/langConfig.xml文件,如simpchn1.4 2.4 属性文件 最好采用UTF-8编码 文件后缀为.properties 属性文件放在各产品模块的resources目录下,按照一定目录层次进行组织1.5 2.5 XML和组件配置文件 最好使用UTF-8编码 一般的XML文件以xml作为后缀 每个模块都必须在META-INF下配置module.xml文件,用来控制改模块的一些全局特性 所有的组件配置文件都是XML
9、文件,他的后缀名必须为,upm,存放在模块的META-INF module.xml的name属性必须与模块的目录名称保持一致,他们都要求小写3.Java代码规范1.6 3.1 命名规范 1.6.1 3.1.1 一般性规则 字符集在26个英文字母、0到9的阿拉伯数字和下划线之中。Java中类、字段、方法、变量、常量尽量用字母表达,没有特别的理由不能用任何的其他字符 命名需要有一定的意义,推荐采用问题域中的术语命名,使命名在一定程度上是自描述的 命名尽量的短,如果命名太长,可以采用别名的方式,或者缩写来简化命名。缩写一定要有的意义,而且需要在整个项目中维护这些缩写的意义 名称缩写的规则(对于类名、
10、字段名、变量名称、模块名称等适用)1) 删除所有的原音字母,压缩重复字母。如button,缩写为btn,2) 如发生命名冲突,则在某一缩写中保留原音。如batton,为了不与button冲突,缩写为batn 不要用前导下划线,也不要在命名的末尾用下划线1.6.2 3.1.2 常量命名 所有的字符都必须大写。采用有意义的单词组合表达,单词与单词之间以“_”下划线隔开。 命名尽量简短,不要超过16个字符程序开发中最好不要直接对literal进行工作,最好引入常量方式应用;只有在特别的情况下才能使用, 如在for循环中初始化变量时可直接用-1,0,1这些常量。例:public final int M
11、AX_SIZE = 120;public final int MAX_WIDTH = 100;public final String PROPERTY_NAME= menu ;1.6.3 3.1.3变量命名变量的命名包括实例变量,静态变量,函数参数的命名。 避免在命名中采用数字,除非命名意义明确,程序更加清晰,对实例变量的命名中不应该有数字 变量名称是名词意义 采用有符合问题域意义的单词或单词组合。第一个单词全部小写,后续的每个单词采用首字母大写,其余小写(特殊单词除外,如URL) 命名尽量简短,不要超过16个字符 除了生命周期很短的临时变量外,避免采用单字符作为变量名,实例变量的命名不要用单
12、字符。常用的单字符变量如整型用 i、j、 k、 m、 n字符型用c、d、 e,坐标用x、y、z1.6.4 3.1.4方法命名命名多数为动词结构 采用有符合问题域意义的单词或单词组合。第一个单词采用小写,后续的每个单词采用首字母大写,其余小写(特殊字除外如URL),没有特别理由不用下划线作为分隔符 在Java中对属性方法命名遵循JavaBean的标准:1) getter方法:get+属性名, 对boolean型采用is+属性名,有些特定的属性名用has, can代替is可能更好2) setter方法:set+属性名 构造方法的命名与类名一致 如:String getName();string i
13、sStopped();void connect();1.6.5 3.1.5类和接口的命名 采用有符合问题域意义的单词或单词组合,每个单词的首字母大写,其余字母小写(特殊字除外如URL) 接口的第一个字符采用 对接口的默认实现类命名方式为接口名称去掉I, 加 Impl 产品业务的内部逻辑实现类,以BO结尾 数据访问的类以DAO或者DMO结尾 测试用例以Test结尾 对与继承ValueObject对象的类,以VO结尾例:public class Fiugrepublic interface FiugreContainerpublic class StdFigure /std为Standard的缩写
14、1.6.6 3.1.7包的命名 采用逻辑上的层次结构,从而减少依赖 产品模块内部的接口定义放在nc.itf.模块名.xx 产品模块对外定义的接口定义包:nc.pubitf.模块名.xx 服务的实现类nc.impl.模块名.xx 产品模块对外定义的接口实现包:nc.pubimpl.模块名.xx 后台业务类代码nc.bs.xx 值对象命名:nc.vo.模块名 UI层命名:nc.ui.模块名 命名简短,采用缩写 包名所有字符都为小写 不要用java, javax作为自定义包的前缀 产品开发中的类不允许放在缺省包下1.6.7 3.1.8 接口设计规范一、 名词描述:a) 接口设计:指将本业务需要给其他
15、业务提供的服务方法和进行远程调用的方法提取为接口的设计方式;b) 接口:指上述设计所涉及的类,包括接口类及接口方法中所使用的业务对象(如VO)和业务异常。不包括接口类的具体实现类;c) 代码设计:指代码即为设计文档,要求其注释可生成JavaDoc文件;d) 设计阶段:分为总体设计、详细设计;二、 设计要求:a) 设计工具:采用Eclipse直接进行代码设计;b) 文档格式:JavaDoc文档,文档中包含接口中使用的接口类、业务对象和业务异常的描述;c) JavaDoc注释要求:符合标准JavaDoc文档所要求的输写规范,具体写发详见JDK DOC帮助文件。对具体对象要求如下:i. 接口类:1.
16、 类注释:类注释应该在import语句的后面在类声明的前面;/* * (接口类简要描绘,必须以句号为结束). * * 提供者:(提供业务组) * * 使用者:(使用业务组,若分方法描述可省略此项) * * 设计状态:(指出接口类设计阶段:总体、详细) * * version(接口版本) * author (接口类总设计负责人) */2. 方法注释:方法注释要紧靠方法的前面;/* * (接口方法简要描述,必须以句号为结束). * * 调用模块: * (明确指出本接口适用范围:公共、私有或具体应用业务模块)* * 最后修改人: * * 最后修改日前: * * 用例描述: * * param(参数用
17、途描述) * return(返回值描述) * throws(异常描述) * since(开始使用的NC版本) * see(关联类) */ii. 业务对象类:1. 类注释/* * (业务对象类简要描绘,必须以句号为结束). * * 拥有者:(拥有业务对象的业务组) * * 设计状态:(指出接口类设计阶段:总体、详细) * * version (业务对象版本) * author (作者/最后修改人) * since (开始使用的NC版本) */2. get方法注释/* * (属性简要描述,必须以句号为结束). * return */3. set方法注释/* * (属性简要描述,必须以句号为结束).
18、 * param (参数用途描述) */iii. 业务异常类:1. 类注释/* * (业务异常类简要描绘,必须以句号为结束). * * 拥有者:(拥有异常的业务组) * * 设计状态:(指出接口类设计阶段:总体、详细) * * version(业务异常类版本) * author (作者/最后修改人) * since (开始使用的NC版本) * see (关联类) */2. 构造方法注释/* * (异常构造的简要描述,必须以句号为结束). */d) 不同设计阶段要求:i. 总体设计:明确描述接口类名称和用途,接口方法名称和用途;ii. 详细设计:明确描述接口方法参数和返回值,明确描述方法使用的业
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C02-AD-0102 设计规范NCV6编码规范-精品文档资料整理 C02 AD 0102 设计规范 NCV6 编码 规范 精品 文档 资料 整理
限制150内