Java开发规约

命名风格

  • 【强制】 Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
正例: "test".equals(object);
反例: object.equals("test");
说明: 推荐使用 java.util.Objects#equals(JDK7 引入的工具类)
  • 【强制】类型与中括号紧挨相连来表示数组。
正例: 
定义整形数组 
int[] arrayDemo = new int[8];
定义String数组
private String[] patterns = new String[8];
  • 判断字符串相等或不相等,必须使用equal()方法,不要用==或者!=(因为,此时的String的trim()方法不可用)
  • 对集合操作时,if (list != null && list.size > 0) ,顺序不能变,先判断是否为null,然后才能取list的大小,否则报错
  • 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加) ,保持代码的简洁性,并加上有效的 Javadoc 注释
正例:
/**
* @return the number of elements in this list
*/
int size();
  • 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。 正例:应用工具类包名为com.alibaba.ai.util、类名为MessageUtils(此规则参考spring的框架结构)
  • Service/DAO层方法命名规约
1) 获取单个对象的方法用get做前缀。 
2) 获取多个对象的方法用list做前缀,复数形式结尾如:listObjects。 
3) 获取统计值的方法用count做前缀。 
4) 插入的方法用save/insert做前缀。 
5) 删除的方法用remove/delete做前缀。 
6) 修改的方法用update做前缀。
  • 领域模型命名规约
1) 数据对象:xxxDO,xxx即为数据表名。 
2) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 
3) 展示对象:xxxVO,xxx一般为网页名称。 
4) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
  • 【强制】单行字符数限不超过 120 个,超出需要换行时 个,超出需要换行时 遵循如下原则: 1) 第二行相对一缩进 4个空格,从第三行开始不再继续缩进参考示例。 2) 运算符与下文一起换行。 3) 方法调用的点符号与下文一起换行。 4) 方法调用中的多个参数需要换行时,在逗号后进行。 5) 在括号前不要换行,见反例。

集合处理

  • 【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
//正例
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
	String item = iterator.next();
	if (删除元素的条件) {
		iterator.remove();
	}
}

//反例
for (String item : list) {
	if ("1".equals(item)) {
		list.remove(item);
	}
}

常量定义

  1. 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。 反例:String key = “Id#taobao_” + tradeId; cache.put(key, value);
  2. 【强制】在long或者Long赋值时,数值后使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。 说明:Long a = 2l; 写的是数字的21,还是Long型的2?
  3. 【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。 说明:大而全的常量类,杂乱无章,使用查找功能才能定位到修改的常量,不利于理解和维护。
    正例:缓存相关常量放在类CacheConsts下;系统配置相关常量放在类ConfigConsts下。

异常处理

  • 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容
  • 【强制】有try块放到了事务代码中,catch异常后,如果需要回滚事务,一定要注意手动回滚事务
  • 【强制】finally块必须对资源对象、流对象进行关闭,有异常也要做try-catch。 说明:如果JDK7及以上,可以使用try-with-resources方式
  • 【强制】不要在 finally块中使用 return。 说明: finally块中的 return返回后方法结束执行 ,不会再执行try块中的 return语句
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值