您好,欢迎来到尚佳旅游分享网。
搜索
您的当前位置:首页java编码规范

java编码规范

来源:尚佳旅游分享网


编码规范

编制日期:2017年11月

1. 目录

绪论 .......................................................................................................................................................3 1.1. 目的 ...................................................................................................................................................3 1.2. 概述 ...................................................................................................................................................3 1.3. 优良代码的特点 ............................................................................................................................3 1.4. 适用范围 ..........................................................................................................................................4 总体架构 ..............................................................................................................................................4 2.1. 框架概述 ..........................................................................................................................................4 2.2. 框架规范 ..........................................................................................................................................5 2.2.1. DAO规范 ...................................................................................................................................5 2.2.2. Service规范 ...............................................................................................................................7 2.2.3. Controller层规范 .....................................................................................................................7 代码规范 ..............................................................................................................................................9 3.1. Java相关命名 ................................................................................................................................9 3.1.1. 包命名 ..........................................................................................................................................9 3.1.2. 类命名规范 ................................................................................................................................9 3.1.3. 方法命名 .................................................................................................................................. 10 3.1.4. 字段命名 .................................................................................................................................. 11 3.1.5. 变量 ........................................................................................................................................... 11 3.1.6. 常量命名 .................................................................................................................................. 11 3.1.7. 属性文件.properties定义变量命名 ................................................................................ 11 3.1.8. JSP文件命名 .......................................................................................................................... 12 3.1.9. JS文件命名 ............................................................................................................................. 12 3.1.10. 资源文件命名 ......................................................................................................................... 12 3.2. 有关注释 ....................................................................................................................................... 12 3.3.1. 程序文件头注释 .................................................................................................................... 12 3.3.2. 方法头注释 ............................................................................................................................. 13 3.3.3. 关键点注释 ............................................................................................................................. 13 格式规范 ........................................................................................................................................... 14 4.1. 缩进 ................................................................................................................................................ 14 4.2. 换行 ................................................................................................................................................ 14 写在后面 ........................................................................................................................................... 14

版本说明 版本 初始版 作者 秦绪海 日期 2017-11-30 备注 提出初始版本,分发各相关人员 绪论

1.1. 目的

为了使软件开发过程顺畅,保证软件质量,于是有了这份开发规范文档。

1.2. 概述

 项目以功能模块来划分分工

 数据库不能随意修改,本地数据库须统一  有标准的Java代码风格,有良好习惯  时刻考虑代码的可复用性  每个人需要有每周项目进度报告

1.3. 优良代码的特点

任何的软件设计中,都离不开编程实现。在软件实现中,除了程序架构设计、数据结构设计、算法的设计以外,还有具体的代码的编写规范问题。

好的代码应该具有以下的特征:

 准确性:保证程序运行稳定、正确,不容易出错  简单性:程序代码容易管理

 清晰性:程序容易理解,无论对人还是计算机

 普遍性:在很广泛的情况下都能工作的很好,也容易做修改以适应新出现的情况

1.4. 适用范围

本规范适用于本公司(上海奇搜网络科技)所有软件项目、产品等的设计、开发以及维护、升级等。

本公司所有软件开发人员在整个软件开发过程中必须遵循此规范。

总体架构

2.1. 框架概述

本公司开发的软件产品多为B/S结构,涉及多个层面的开发,为便于逻辑分离及项目分工,本公司开发的软件产品应当符合MVC设计模式。新框架由相互协作的三层组件(DAO、Service、Controller)构成。DAO、Service如图2.1所示,Controller如2.2所示

图2.1

图2.2

2.2. 框架规范

2.2.1. DAO规范

DAO为持久层,用于访问持久性数据,例如为关系型数据库。规定要求必须每一个实体对象建立一套DAO入口类。如图2.3所示

DAO层类:

 model:object 持久对象,可以看成是与数据库中的表相映射的java对象,属性

和表结构对应。

 mapper:MyBatis接口类,与mapper.xml配置到一起。

 mapper.xml:MyBatis的SQL Map配置文件。我们将在这里编写SQL语句,

并将这些SQL语句与对象的方法配置到一起。

图2.3

每个Mapper要求实现5个Base方法如图2.4所示

图2.4

2.2.2. Service规范

Service为服务层,主要负责业务逻辑开发,要求每一个Bean建立一套Service入口类。禁止service层依赖于request等Web对象,便于servcie层可以脱离于Web应用。如图2.5所示

Service层类:

 service类:服务层接口类。  serviceImpl类:服务层实现类。

 DTO类:数据传输对象,用于展示层与服务层之间的数据传输对象。

图2.5

2.2.3. Controller层规范

Controller为展示层,负责具体的业务模块流程的控制,在此层里面要调用Service层的接口来控制业务流程。控制的配置通过SpringMvc注解的方式进行。Controller类

都必须直接继承类BaseController,对request、session、response的操作必须使用BaseController中封装的的方法进行操作。控制权限通过权限注解方式进行。如图2.6所示

Controller层类:

 Controller类:展示层类。  VO类:视图对象,用于展示层。 权限注解:

 @HasAllPermissions:判断当前用户是否拥有其中所有的权限(逗号分隔,表

示“与”的关系)

 @HasAnyPermissions:判断当前用户是否拥有其中某一种权限(逗号分隔,表

示“或”的关系)

 @HasPermissions:判断当前用户是否拥有某种权限  @HasRoles:判断当前用户是否拥有某种角色  @Authenticated:判断当前用户是否已认证

 @Guest:判断当前用户是否未登录(包括:未认证 或 未记住,即“访客”身

份)

 @User:判断当前用户是否已登录(包括:已认证 与 已记住)

图2.6

代码规范

3.1. Java相关命名

尽量保证能够通过变量名得知变量的含义

3.1.1. 包命名

 包命名采用全小写命名

 通过唯一域名+项目名+模块名+组件来命名 比如:

com.pz.call.outbound.controller 3.1.2. 类命名规范

类和接口表示一类对象,必须以名词命名。类名的第一个字母必须大写,类名如由多个单词(或缩写)构成,则每个单词(缩写)的头一个字母必须大写。 为统一起见,对我司的框架中出现的七种类做出进一步规定,如下:

 DAO类:以“DAO”三个大写字母结尾,如SystemUserDAO;  Service类:以“Service”结尾,如SystemUserService;

 ServiceImpl类:以“ServiceImpl”结尾,如SystemUserServiceImpl;  model类:首字母大写,如SystemUser;  VO类:以“VO”结尾,如SystemUserVO;  DTO类:以“DTO”结尾,如SystemUserDTO;

 Controller类:以“Controller”结尾,如SystemUserController;

上述七个示例类对应表system_user,类(接口)名和表名的对应关系为:表名第一个字母为大写,后续字母为小写,直到遇到下划线“_”,下划线“_”不出现在类名中,下划线“_”紧跟的字母为大写,后续字母为小写,以此类推。

对于不需要单独维护或查询的表,可以不需要写对应的Controller、Service、VO、DTO类,但其他俩类应当提供,由其他的service类调用。

3.1.3. 方法命名

方法表示一种行为,它代表一种动作,最好是一个动词或者动词词组或者第一个单词为一个动词。

 方法命名采用Camel命名法  小写字母开头,各个单词首字母大写

 属性的getter和setter方法尽量使用自动生成,并放在程序的后面。  Boolean类型返回值的方法应形如isProperty()

DAO层方法,只能以insert(插入),delete(删除),update(更新),select(查找)开头,其他层方法避免以这个5个单词开头,以免造成误解。

Service方法,根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。比如系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,所以最好不要用使用register,采用create会更好写。避免使用与web层相关的方法。

Controller层方法最好是贴近web的语言,如register,login,logout等方法。

3.1.4. 字段命名

类中的字段表示类的一个属性或标志,同样也必须以名词命名。字段名的第一个字母必须为小写,其余字母和表字段映射关系同类名和表名的映射关系。如表system_user的字段“register_date”则在VO、DTO、Model上述三类中都必须以“registerDate”出现。对应关系定义如表3.1所示:

VO属性名 registerDate DTO属性名 registerDate Model属性名 registerDate 表3.1

数据库字段名 register_date 3.1.5. 变量

变量属于名称,避免用采用其他词性。 采用名称要能代表在方法中的意义。如果员工列表: 最好是使用List employees或则employeeList而不是去使用List list或则更糟糕的List l,如果应用了List employees和Map employees可以分别使用employeeList和employeeMap。

自定义类型的变量可以采用本身的名称,把首字母改为小写。  采用Camel命名法

 小写字母开头,各个单词首字母大写  特有大写缩写词汇保持大写如:SQL

3.1.6. 常量命名

 采用全大写命名法 ,所有字母均大写

比如:

String SYSTEM_USER_TYPE; 3.1.7. 属性文件.properties定义变量命名

 pz.call.import.urlPath格式,全部小写,其中pz.call.import是宿主,urlPath多

个单词小写字母开头,各个单词首字母大写。

比如:

pz.call.import.urlPath=/asset/template/wx pz.call.upload.urlPath=/asset pz.call.call.phoneKey=sdf#ttj 3.1.8. JSP文件命名

 采用全小写命名法

 所有的字母均小写,单词之间以下划线’_’分隔  展示页面,按照名词+描述,如:news_list.jsp  操作页面,按照名词+动词命名,如:news_add.jsp  按照模块从大到小命名,如:news_order_add.jsp

3.1.9. JS文件命名

 与对应的JSP页面名字相同,多个字母首字母大写

 如:JSP页面为news_order_add.jsp,相对应JS文件newsOrderAdd.js

3.1.10. 资源文件命名

 采用全小写命名法

 按照前缀+模块+描述+状态命名,如:btn_main_login_pressed.png  (不一定完全包含如上4个部分,但是要依照顺序命名)

3.2. 有关注释

团队成员都应该形成良好的写注释的习惯,方便以后阅读,以及为了后期生成可读性良好的Java Doc

3.3.1. 程序文件头注释

提前设置好文件的模板Template

如以下模板:

/** * @Description: ${类描述}

* @ProjectName: ${PROJECT_NAME} * @ClassName: ${TYPE_NAME} * @Author: ${user} * @CreateDate: ${DATE} ${TIME} * @UpdateUser: ${user} →→→ 每次进行代码修改根据实际情况进行更新 * @UpdateDate: ${DATE} ${TIME} →→→ 每次进行代码修改根据实际情况进行更新 * @Version: 1.0 →→→每次进行代码修改根据项目版本号进行升级 */ 3.3.2. 方法头注释

一般在写完一个方法后使用快捷键生成一个块注释,IDE会自动帮我们写入一些信息。 如以下模板:

/** * @Description: $params$ * @Author: 作者名 * @CreateDate: $DATE$ $TIME$ * @UpdateUser: 更新者名 * @UpdateDate: $DATE$ $TIME$ * @Note: */ 注意:方法里面不要使用块注释 3.3.3. 关键点注释

应该包含如下信息: * 一些程序关键的地方 * 一些程序不易读的地方 * 编写代码过程中遇到问题的地方 * 需要提示读者的地方

注释应该写得少而易懂

格式规范

4.1. 缩进

应注意使用format来格式化代码,使用Tab键来缩进代码,相当于4个空格。

4.2. 换行

 {}花括号应该另起一行,左花括号与方法名、类名在同一行。(除了数组初始化时的

花括号)

 if、while等语句,假如体内只有一句代码也不要省略{},为了方便以后的增删  字符串过长考虑拆分成多行

写在后面

希望各位成员遵守这份开发规范文档,养成良好的开发习惯

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- shangjiatang.cn 版权所有 湘ICP备2022005869号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务