- 各层命名规约
Service/DAO 层方法命名规约
- 获取单个对象的方法用 get 做前缀。
- 获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects。
- 获取统计值的方法用 count 做前缀。
- 插入的方法用 save/insert 做前缀。
- 删除的方法用 remove/delete 做前缀。
- 修改的方法用 update 做前缀。
领域模型命名规约
- 数据对象:xxxDO,xxx 即为数据表名。
- 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
- 展示对象:xxxVO,xxx 一般为网页名称。
- POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO
- 如果变量的初值会被覆盖,就没有必要给变量赋初值
// List<UserDO> userList = new ArrayList<>();
List<UserDO> userList;
if (isAll) {
userList = userDAO.queryAll();
} else {
userList = userDAO.queryActive();
}
• 采用Lambda表达式替换内部匿名类
// 以前经常这样用来排序
List<User> userList = ...;
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User user1, User user2) {
Long userId1 = user1.getId();
Long userId2 = user2.getId();
...
return userId1.compareTo(userId2);
}
});
// Lambda表达式效率更高
List<User> userList = ...;
Collections.sort(userList, (user1, user2) -> {
Long userId1 = user1.getId();
Long userId2 = user2.getId();
...
return userId1.compareTo(userId2);
});
• 尽量使用基本数据类型作为方法参数类型与返回值类型,避免不必要的装箱、拆箱和空指针判断
• 尽量指定方法的final修饰符
方法指定final修饰符,可以让方法不可以被重写,Java编译器会寻找机会内联所有的final方法。
内联对于提升Java运行效率作用重大,具体可参见Java运行期优化,能够使性能平均提高50%。
注意:所有的private方法会隐式地被指定final修饰符,所以无须再为其指定final修饰符
• 尽量避免不必要的方法调用(这个也经常犯)
// 反例:
List<UserDO> userList = userDAO.queryActive();
if (isAll) {
userList = userDAO.queryAll();
}
// 正例:
List<UserDO> userList;
if (isAll) {
userList = userDAO.queryAll();
} else {
userList = userDAO.queryActive();
}
• 尽量使用Arrays.asList转化数组为列表
List<String> list = Arrays.asList("Short", "Integer", "Long");
- 不要使用size方法检测空,必须使用isEmpty方法检测空,isEmpty方法使得代码更易读,并可以获得更好的性能
// 一直都是这样写的
List<AccountDetail> list = new ArrayList<>();
if (list == null || list.size() <= 0) {
return ...;
}
// 下次这样写
List<AccountDetail> list = new ArrayList<>();
if (list == null || list.isEmpty) {
return ...;
}
• .尽量避免在循环中捕获异常
• 初始化时尽量指定缓冲区大小
StringBuffer buffer = new StringBuffer(1024);
StringBuilder builder = new StringBuilder(1024);
// 使用HashMap(int initialCapacity)来初始化容量,JDK会默认帮我们计算一个相对合理的值当做初始容量
// 相对合理并不一定能满足要求
Map<String, String> map = Maps.newHashMapWithExpectedSize(7);
• 尽量使用线程池减少线程开销
// 反例:
public void executeTask(Runnable runnable) {
new Thread(runnable).start();
}
// 正例:
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(10);
public void executeTask(Runnable runnable) {
executorService.execute(runnable);
}
阿里巴巴Java开发规约IDE插件安装
idea:
1. 打开 Settings >> Plugins >> Browse repositories...
2. 在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效
eclipse:
1. Eclipse --> Help --> Install New Software
2. 插件安装地址:https:///plugin/eclipse/update
3. 然后勾选Ali-CodeAnalysis,再一直点Next --> Next --> Finish 按提示走下去就好。 然后就是提示重启了,安装完毕。

















