BOSS代码走查内容表
命名正确
包命名正确:
Package 的名字应该都是由小写单词组成。例如:package com.neu.util
类命名正确
Class 名称使用帕斯卡命名法命名:名称由具有含义的单词组成,并代表了其意义,且单词首字母大写例如:public class ThisAClassName{ //CODE}
抽象类以Abstract开头例如:AbstractThisAClassName
变量、方法、方法参数命名正确
使用骆驼命名法命名,即名称由有具体含义的单词组成,并代表了其作用,第一个单词之外,其他单词首字母大写
例如:public void setProductName(String productName){
this.productName=productName;
}
接口命名正确
接口以大写I开头例如:IThisAInterface
静态常量命名正确
Static Final 变量的命名 static Final 变量的名字应该都大写,并且指出完整含义。
例如private static final String ISO8610_DATE_PATTERN==”yyyy-MM-dd”
数组命名正确
数组的命名 数组应该总是用下面的方式来命名:
例如:byte[] buffer; 而不是: byte buffer[]
类信息正确
类代码是否超过500行,或在发生变化时会变得狠大
除界面外,类大小不应超过500行
类所属工程及相关工程以来是否正确
类是否放到相应的工程下且包路径正确
新建类引入的工程以来是否正确。例如:主营用不应该依赖客户化
类所需要的第三方包是否上传到指定服务器
避免构建时因包引用不正确造成构建时间
类中是否存在重复代码,需要提取成公共方法
重复代码应该提取为公共方法,或供其它地方使用的工具类
当某个功能变化时,是否需要修改多个类
子类只使用了“父类”的某些属性或者行为
检测改继承是否使用正确,是否应修改为组合的关系
方法处理正确
方法是否超过30行
方法超过30行一般为业务主线与实现细节未分开,需要将相同逻辑或者实现细节提取到为新的方法,并使用有含义的方法名
方法参数是否存在异常但未做处理
例如:参数不能为空,需要使用Assert.判断处理
方法中的变量或者常量是否使用正确
例如:默认不变子字符串或数值应提取为常量,变量的作用域是否正确等
方法中循环边界是否正确,不应出现死循环
方法中循环中不应多次调用数据库
例如: while (null != seg) {
double min = seg.getBeginSegment() * calcMonthlyFee(dto);
//这里不正正确calcMonthlyFee 多次调用了数据库,应考虑循环外处理
//CODE...
}
private double calcMonthlyFee(PromotionExcuteDTO dto) {
//调用数据库
}
方法中全局变量使用是否正确
检测全局变量是否必要
检测全局变量是否因负值导致问题
方法中参数是否不必要,或者参数是否过多
方法中逻辑是否可以调用工具类实现
方法中Switch语句是否可以使用类来代替
方法中是否存在过多的IF判断或者循环
异常处理是否正确
异常是否未被捕获
检测是否某些应该捕获的异常类型没有使用Catch捕获
捕获到的异常是否未处理
检测异常捕获后是否有相应的处理
检测特殊情况下如果需要吃掉相关的异常,是否打印了相关提示日志
例如: try{
// BUSINESS CODE
// ...
}catch (Exception e) {//若不需要中断处理需要打印日志
log.error("STARIBOSS.internal.error!Case:", e);
}
Catch异常是否遵循从小到大的原则
例如:存在”nullPointException异常” 、”Exception异常” 同时存在时,需要先捕获“null PointException异常”进行处理,然后再捕获”Exception异常”处理。
LOG日志处理是否正确
日志等级是否使用正确
log.info();//一般信息
log.debug();//调试信息
log.error();//错误信息,一般未知的异常Exception异常使用
log.warn();//警告信息
log.fatal();//致命错误信息
日志输出内容是否正确
检测输出内容是否可以帮助排查相关问题
日志输出格式是否正确
如果需要输出堆栈信息log.error("error message", e)
如果只需要输出错误信息 log.error("error message"+e)