《项目-编码规范.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 国际化资源文件按照如下格式编写:【例子】module-zh.propertiesmodule-en.properties全局资源文件为:global_zh.propertiesglobal_en.properties1.9 数据表命名表命名参照术语表,名称要求精炼地体现业务含义,尽可能避免出现2个以上的单词,单词长度尽可能短,表现同一业务含义的多个单词之间不必以_分割;【例子】XX_USERACCOUNT表名采用单数形式,统一大写;子系统的命名参照术语表;长度最大为30,禁止使用双引号【数据表名命名规则】 单业务表命名:子系统简写一表名 中间表命名:子系统_表1_表2system_table1_table2 数据表的OW