软件开发代码规范:

JAVA代码规范

普通规范

包的命名方式:公司域名倒置+子公司/产品名称+功能名称

如:

net.hedao.music
net.hedao.uem.internal
net.hedao.uem.http

utils和tools命名规范

utils:

  • 定义:通用的,与业务无关,可供其他项目使用
  • 方法通常是public static;一般无类的属性,有的话也是public static
  • 例子:字符串类,文件工具类

tools:

  • 定义:在当前项目通用;仅能在当前项目使用
  • 方法通常是public static;一般无类的属性,有的话也是public static
  • 用户校验类,支付工具类

类名规范

类名首字母大写,若多个单词拼合则采取驼峰式命名

如:

class Test{

}
class TestDemo{

}

成员属性

成员属性,变量名使用有含义的单词或词组构成;

private long abc=0;//禁止

常量必须由大写字母和下划线分割单词的方式组成

public static final int MAX_NUMBER = Integer.MAX_VALUE;

静态变量:采用小写s开头,代表static,s后首字母大写,遵循驼峰原则

public static long sCurrentTime;

实体类,java bean类中普通成员变量采用小写字母开头,单词之间采用驼峰式命名规范。

注:此类用于存储数据,只有setter,getter方法,不作其他业务处理

class User{
private String userName;
private String userAccount;
}

方法的命名规范

方法命名采用小写字母开头,字母之间采用驼峰式命名规范,一般不超过20个字符,长度很长时可以使用简写

public long calculateScreenSize() {//计算屏幕尺寸,正确
}
public UserInfo getCustomUInfo() {//获取客户个人信息,正确
}
public long size() {//计算屏幕尺寸,错误
}
public UserInfo getCustomUserInfomation() {//获取客户个人信息,错误
}

注释规范

注释:

  • 屏蔽不需要执行的代码
  • 对代码进行解释说明

类的注释

类的注释采用多行注释方式,在包名和类定义中间,通常记录作者信息,版本号,类的功能描述信息等。

/**  
* 文件工具类
* 项目名称:JAVA编码规范测试用例
* 包:net.herdao.common.utils
* 类名称:FileUtils.java
* 类描述:本类是一个文件操作工具类,包括了文件的几个基本操作方法,创建文件、删除文件、文件重命名
* 创建人:林鸿亮
* 创建时间:2021/10/21 11:46
*/
public class FileUtils{

}

方法的注释

多行注释,主要内容记录该方法的作用参数及参数说明返回值返回类容异常信息说明修改记录是否过期,及修改日期等等。

我们规定所有public类型的方法必须加上注释对方法和参数加以说明,private方法中如果处理逻辑相对较多,相对复杂的也应加上注释。

/**
* 在指定目录创建一个新文件
* @param dirPath 文件目录路径
* @param fileName 文件名称
* @return 返回创建的新文件
*/
public static File createeNewFile(String dirPath, String fileName)
{File file = new File(dirPath,fileName);
return file;
}

成员属性的注释

可以使用单行注释也可以使用多行注释

代码块和单行代码通常采用单行注释

private static void deleteFile(File file) {
if (file != null && file.exists()) { //判断文件是否存在
file.delete(); //删除文件
}
}

代码格式规范

统一编码格式

统一采用UTF-8的格式

编码的缩进

缩进空格数为4,同一业务级代码块保持左对齐,不能全在同一垂直线上

代码行宽度

单行代码最长不得超过120列

代码行长度

方法长度限制在100行内,若有超过可能按照业务逻辑拆分成多个方法

属性及方法的范围确定

  • public : 当某个方法或属性需要被外部非子类和非同包内中的对象直接调用的时候采用public属性。

  • protected : 当某个方法或属性只会被其子类调用或者只会同一包下的其他对象调用时,使用protected限制。

  • private: 当某个方法或属性只会被本类中的其他方法调用的时候,使用private限制。

硬编码的后遗症

常量字符串或数值必须在类中定义常量值,通过常量值引用来使用固定数值和固定字符串

public class Test {
public static final int MIN_DATA = 1;
public static final int MAX_DATA = 99;
public static final String STR_SUM = "岗位评分结果为=";


private void printSum() {
System.out.println(STR_SUM+(MIN_DATA+MAX_DATA));
}
}

TODO规范

用来描述已知待改进,待补充的修改点,加上作者名称

// TODO <“作者名称”>: 补充XX处理

方法参数规范

每个方法最多三个参数,超出三个要封装成javabean对象

@SysLog日志注解使用

接口涉及增删改数据时必须使用@SysLog注解。

@ApiOperation(value = "权限配置-修改用户角色",notes = "权限配置-修改用户角色")
@SysLog("权限配置-修改用户角色")
@PutMapping(value = "/editUserRole")
public R<Boolean> saveUserRole(@RequestBody UserDTO userDTO){
if(userDTO.getUserId() == null){
return R.failed(Boolean.FALSE).setMsg("用户id不能为空");
}
return R.ok(userService.saveUserRole(userDTO));
}

工程框架规范

应用分层

代码分层为MVC方式,不能用DDD方式修改代码目录结构

依赖包管理版本规范

基础平台父工程hdp已经引入绝大部分开发所需maven 依赖包,如果需要增加依赖包必须先征得架构师同意。业务项目不得重复添加已有依赖包,所添加依赖包版本必须与基础平台依赖包版本一致,引入后必须处理依赖冲突