项目编码规范.docx
《项目编码规范.docx》由会员分享,可在线阅读,更多相关《项目编码规范.docx(26页珍藏版)》请在三一文库上搜索。
1、项目全称编码规范承建方全称目录1命名规范11.1 常量命名11.2 变量命名11.2.1 域类变量11.2.2 局部变量21.2.3 静态变量21.3 方法参数命名21.4 方法命名31.5 类命名41.6 包命名51.7 配置Bean命名61.8 文件命名61.9 数据表命名71.10 数据项命名71.11 外键命名91.12 索引命名92注释规范93编码规范101.1 开发环境101.2 编码风格111.3 接口规范111.4 目录规范121.4.1 源文件目录121.4.2 Web资源文件目录141.5 Ul前台编写规范151.6 JAVA编写规范181.7 JAVA集合类规范191.8
2、 Ajax应用规范191.9 JSP编写规范191.10 JS编写规范20文件名命名规范20命名空间(NameSpace)格式21命名规范22书写规范23对象创建说明23全局变量241.11 SQL编写规范251.12 编码最佳实践264异常规范265 日志规范265.1 系统日志265.2 业务日志276 Maven依赖构建规范286.1 Maven依赖287流程规范287.1 流程说明287.2 相关工具287.3 文档规范298版本管理规范298.1 文档规范298.2 代码规范301命名规范总原则:名称中不能以、飞等特殊字符开头和结尾;命名尽可能遵循术语表,尽可能符合标准的英文单词或缩
3、写,缩写在术语表中需有说明;命名尽可能做到见名知意,含义清晰准确,同时注意避免产生二义性;1.1 常量命名A常量统一大写;程序中的固定数字、字符串等,必须用常量来表示,并能正确表达其含义;常量尽可能写在相应的常量类中;【例子】STATUS_OF_START,STATUS_OF_END开始状态,结束状态PATTERN_OF_URL_FILTER1.2 变量命名自定义类型变量命名尽可能尽量保持和类名相同,只是首字母小写;【例子】UserRoleuserRole;当针对接口命名变量时,去掉变量前缀L其他规则不变;【例子】IUserServiceUserService;除了循环内部,竟可能避免使用单个
4、字符做变量;【例子】For(inti=0;ilength;i+).;1.2.1 域类变量以小写字母开头,单词之间以大写母分割;标识复数时尽可能以T结尾,当W无法表述时则以相应的集合类型做结尾;如果出现同类型的多变量声明,则应加业务单词前缀限定,避免直接在变量后加数字的方式区分;【例子】ListusersMappersonMapGradeExamgradeExam,GradeExamFefGradeExam1.2.2 局部变量以小写字母开头,单词之间以大写母分割;标识集合时应以相应的类型做些结尾,或者特殊类型的变量,通常使用其类型作为后缀,过长的特殊类型允许使用缩写;【例子】UserUserAr
5、rayListUserListMapuserMap;对于相同类型的多变量声明,加业务含义前缀限定【例子】Useruser;UsercheckedUser;1.2.3 静态变量静态变量统一大写;如果是一组静态变量,名称的开头应有类型限定词,词之间用下划线分割;【例子】ACTION_OF_ADD,ACTION_OF_UPDATE1.3 方法参数命名以小写字母开头,单词之间以大写母分割其他规则同局部变量避免出现使用argO,argl.argN类似的参数列表,参数命名需明确1.4 方法命名方法命名采用动宾结构+修饰词,其中动宾结构需要体现该方法的主要功能;【例子】getProduct(Stringid
6、)单个产品getProducts(Stringid,.)按照参数列表取多个产品,优先级高getProductList(Stringid9.)同上,如果s表述不了,采用此方式getProductArray(Stringid,.)按照参数歹U表取得产品数组getProductMap(Stringid,.)按照参数列表取得产品MAPgetProductWithName(Stringname)卞艮据名称取得产品getProductA11()非getAHProduct()取得所有产品getProductPage()普通的产品分页获取方法getProductPageWith*(.)特殊的产品分页获取方法动
7、词说明:对于Service层或DAO层的方法名称,使用get*已经能够涵盖所有的业务方法,所以自定义方法中尽可能避免使用find*或其他的动词方式;属性方法需遵需getset原则;【例子】Stringname;属性getName().setName(Stringname).对于表现层的主业务实体明确的Action层的常用业务方法定义;例子ProductActionlist()管理实体列表input()编辑实体(新增、修改)save。保存实体delete。删除实体enable。启用实体disable。禁用实体ajaxMethod()处理ajax交互的方法Action中result说明: 统一采用
8、小写方式 对于主业务方法,默认值为success,input,reload,list,error 如果上述不能满足则在基本值后加业务限定词【例如】IiStiteminputsubjectreloadsubject 如果Action中除了出业务实体外还存在其他业务实体的业务方法,则在基本方法后面加上相关名称;【例子】IistProductItem Service层和DAO层的常用业务方法定义;【例子】save*SaveEntity保存实体delete*deleteEntitydeleteEntitys删除实体get*getEntitygetEntityWith*取得实体getEntityPage
9、取得实体分体1.5类命名以大写字母开头,由多个单词组成的类名,各单词以大写字母分割; ACtiOn层的类命名必须以*Action结尾UserAction SerViCe层的类命名必须以*Service结尾UserService Dao层的类命名必须以*DA0结尾UserDAO vo层的类命名必须以*V0结尾UserVO model层的类命名User util层的类命名尽量以*Util结尾,根据需要可允许*Helper,*Holder形式的类名存在StringUtilModelHelperSpringContextHolder特殊说明对于model层实体命名; model包中实体bean与数据库
10、中的表名尽可能保持一致,如果数据库表名包含下划线,则在bean名中要予以摘除; 如果上述不能满足则按照术语表命名进行即可,必须保证实体名称在整个系统中的唯一性;接口命名以T开头IUSerSerVice,实现类名以ImpI结尾UserServiceImpl;补充说明:对于基础业务服务平台的对上数据服务及子系统中的对外接口需要遵循接口和实现类方式;1.6包命名 包的划分需要依据并且符合产品的业务架构划分,来源于产品线定义; 包的命名全部使用小写的ASCn字母,采用有意义的英文单词或术语表中的缩写,尽可能避免使用下划线或数字等其它字符;顶级包名com.unitever”,例如: com.unitev
11、er.framework(fe品的框架包) COm.unitever.base(产品的基础平台包) COm.unitever.子产品(子产品顶级包的命名)“子包”命名要遵循以下命名规则:common公共文件存储包common.util工具包common.helper辅助包component组件包core核心包annotation注解包constant常量包external对外提供接口包extemal.impl实现类包名service业务服务包dao数据库访问包webweb.actionmodelmodel.hbmvoil8n管理Web应用相关的包页面转发包领域模型相关的bean包管理与mode
12、l对应的hibernate映射文件包业务层之间的数据传递对象包国际化的资源文件包1.7 配置Bean命名考虑到模块化开发,在定义公共对象时,可能会存在重复定义的情况,例如,好几个模块都定义某第三方的代理工厂类时,这时为了避免命名冲突要求需要加上模块编码限定;转为Spring中配置文件的bean的id命名,尽可能按照类型名首字符小写方式;1.8 文件命名对于struts配置文件中CRUD业务的result文件命名: 列表方法对应entity.jsp 新增和修改方法对应于entity-input.jsp 尽可能避免出现数字配置文件的命名: spring:除了ApplicationContext.x
13、ml外,功能组件配置按照ApplitionContext-function-function.xml命名;【例子】applicationContext-cxf-client.xmlapplicationContext-cxf-server.xml 业务模块的按照applicationContext-module-function.xml命名【例子】application-ex-schedule.xml struts配置文件:除了主struts.xml外,各模块的配置统一用注解方式;如果注解方式不能满足,按照配置文件方式配置例子struts2-ex.xml 国际化资源文件按照如下格式编写:【例子
14、module-zh.propertiesmodule-en.properties全局资源文件为:global_zh.propertiesglobal_en.properties1.9 数据表命名表命名参照术语表,名称要求精炼地体现业务含义,尽可能避免出现2个以上的单词,单词长度尽可能短,表现同一业务含义的多个单词之间不必以_分割;【例子】XX_USERACCOUNT表名采用单数形式,统一大写;子系统的命名参照术语表;长度最大为30,禁止使用双引号【数据表名命名规则】 单业务表命名:子系统简写一表名 中间表命名:子系统_表1_表2system_table1_table2 数据表的OWner应该
15、是具体的设计人(VSS帐号),不应该是dbo或none1.10 数据项命名数据项命名中除了外键字段尽可能避免出现下划线,命名需参照术语表,统一小写,尽可能避免出现两个以上的单词,不需要包含表的名称信息;【例如】StUdent的名称nameStudentNamex尽可能避免系统保留字;单个业务实体表的主键必须为id;引用列命名采用id_引用表,如果是父子关系则为id_parent,按照重要程度顺序排列表其他字段前面;基本业务实体表必须具备修改人,修改时间,创建人,创建时间,删除标志字段;如果数据项是一个标志位,则尽可能提供缺省值;主键采用32为UUlD;长度最大为30,禁止使用双引号【允许使用的
16、数据类型】类型范围Sqlserver数据类型Oracle数据类型MySqI数据类型字符型长度固定charcharchar可变字符型长度不固定varcharvarchar2varchar32位整型-2,147,483,6482,147,483,647intintegerint日期型yyyy-mm-ddchar(10)char(10)char(10)日期时间型(精确到秒)yyyy-nm-ddhh_mm_sschar(19)char(19)char(19)日期时间型(精确到毫秒)yyyy-nm-ddhh_mm_ss_SSSchar(23)char(23)char(23)布尔型0(表示false)1(
17、表示true)char(l)char(l)char(l)大文本textdobtext【表模板参考】用于数据库文档编写数据项名称类型(精度)说明idchar(32)id_表名称char(32)关键字段ft(添加时间)char(19)。为有效,1为删除It(最后修改时间)char(19)fu(添加的用户)char(32)Iu(最后修改的用户)char(32)1.11外键命名外键名统一大写,格式为FK_外键表指向表;为了避免PDM中引用线太多,制订了如下规则进行控制,这些规则仅应用于外键的编码(CoDE)上:【例子】表A(TA)指向表(TB)外键NAME外键CODE模块内重要模块内非重要模块外重要模
18、块外非重要FK_TA_TBFK_TA_TB_11FK_TA_TB_12FK_TA_TB_21FK_TA_TB_22数据表中的外键约束必须建立,以保证数据的完整性;长度最大为30,禁止使用双引号1.12索引命名索引名统一大写普通索引格式为IND_SyStem_表名_字段名【例子】IND_EX_SSCORE_COURSE是为ra_sscore的id_course创建索引唯一索引格式为UNLsystem表名_字段名长度最大为30,禁止使用双引号2注释规范JaVa注释按作用分为两种:实现注释:对代码作用的解释,其表现形式又分为行注释和段注释。行注释:对一行代码的解释说明,以“”开头,结束属性的放在行结
19、尾,其他独占一行;【例子】publicStringname;行注释内容段注释:当需要描述的信息一行不能表述清楚时用段注释,一般放在所描述信息的前面,形式如下:【例子】*段注释内容*文档注释:对类公共方法、变量等信息的描述,以方便其他编程或维护人员对该类的了解及应用,通常以javadoc文档的形式提供给外界【例子】* main方法* paramargs参数*publicstaticvoidmain(Stringargs)注释应用规范: 接口中的方法和变量,参数需要写注释加以说明 SerViCe层业务方法需要写注释描述方法的职能 工具类中的公共方法需要写注释描述其功能 复杂逻辑计算过程的关键代码片
20、段处需要有注释说明 同一段代码片段被多人维护,每次修改需要写注释说明 变量命名时词不达意或会造成困惑的需要写注释加以说明3编码规范3.1 开发环境开发平台WindowsXPJDK版本Jdkl.6TOMCAT版本Tomcat6.0.18开发IDE工具MyEcIipseEnterpriseWorkbench9.OMl设计工具PowerDesigner9.5,RationalRose2003,MindjetManager9axureRP源码管理SVN文档管理MicrosoftVisualSourceSafe2005,ms-office2007数据库MicrosoftSQLServer2008r2系统
21、文件编码TF-83.2 编码风格代码风格主要包括缩进、空格、对齐、行距、词间距,注释等,总原则为: 缩进应为4个空格,不要在源文件中保留Tab字符。 变量应集中定义,定义的顺序为常量静态类变量,方法之间不应存在变量定义。 “厂应跟在类名、方法名、判断条件的后面,T应独占一行。 类体方法体代码块应该保持层次结构,关系密切的行对齐且不应存在无意义的空行等。 为了可维护性,类的大小应控制在2000行以内,超过部分要进行适当拆分,方法尽可能控制在100行以内代码风格统一进行管理,在初次导入工程时,需要为工程指定格式化模板文件,编写代码时,eclipse会自动按照上述要求来格式化代码片段。格式化模板文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 编码 规范
