下面的文章都是摘抄阿里巴巴的Java开发规范,如果已经阅读过该书的小伙伴们可以直接跳过了, 如果还没有阅读过该书的小伙伴可以去网上找找资源,或者下面直接评论我也可以分享出来,下面是我看时留下的一些笔记。
代码的命名严禁采用拼音和英文混合的形式
类名需要使用UpperCamelCase风格
MapPolo/ UserDo /
localHost / dishMapper
MAX _ STOCK _ COUNT
BaseUser / CommonException / UserServiceTest
int[] arrayDemo;
com.dy.example.util
public class OrderFactory;
接口的方法和属性不需要加任何修饰符号(public也不要加),保持代码的简洁性,加上有效的Javadoc注解,不再接口内定义变量,如果一定要定义变量,肯定是
与接口方法相关,并且是整个应用的基础常量
void commit();
对于Service和DAO类,暴露出来的一定是接口,内部的实现类用Impl的后缀与接口区别。
UserServiceImpl 实现 UserService接口
Service/DAO层方法规范
获取单个对象的方法用 get 做前缀。
获取多个对象的方法用 list 做前缀,复数形式结尾如:listObjects。
获取统计值的方法用 count 做前缀。
插入的方法用 save/insert 做前缀。
删除的方法用 remove/delete 做前缀。
修改的方法用 update 做前缀。
领域模型命名规约
数据对象: xxxDO , xxx 即为数据表名
数据传输对象: xxxDTO , xxx 为业务领域相关的名称
展示对象: xxxVO , xxx 一般为网页名称
POJO 是 DO / DTO / BO / VO 的统称,禁止命名成 xxxPOJO
大括号{}为空,就简洁写成{}即可,不需要换行,不为空时;
// 大括号内为空,简写成{}
public void test(){};
// 左大括号前不换行
//左大括号后换行
//右括号前换行
public void test() {
String test;
public void test() {
boolean flag = true;
if(flag){
} else {
}
}
//右大括号后还有else等代码则不换行,表示终止的右大括号后必须换行
if/for/while/switch/do 等保留字与括号需要加一个空格。
任何二目、三目运算符的左右两边都需要加一个空格
注释的双斜线与注释内容之间需要有一个空格
// 这是注释,请注意双斜线后有一个空格
String ygb = new String();
单行字符数限制不超过120个, 超出需要换行。
1)第二行相对第一行缩进4个空格,从第三行起,不再继续缩进
2)运算符与下文一起换行
3)方法调用的点符号与下文一起换行
4)方法调用中的多个参数需要换行时,在逗号后进行
5)在括号前不要换行
StringBuffer sb = new StringBuffer();
// 超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行
sb.append("zi").append("xin")...
.append("huang")...
.append("huang")...
.append("huang");
method(args1, args2, args3);
避免通过一个类的对象引用来访问此类的静态变量或静态方法,无需增加编译器解析成本
Object的equals方法容易抛出NPE异常,应采用常量或确定有值的对象来调用eauals。
"dy".equals(object);
构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,需要放在自己写的init方法中。
final关键字可以用来声明类、成员变量、方法、以及本地变量
不允许被继承的类,如: String类
不允许修改引用的域对象
不允许被重写的方法,如实体类的setter方法
不允许运行过程中重新赋值的局部变量
避免上下文重复使用一个变量,使用final描述可以强制重新定义一个变量,方便更好地进行重构。
类成员和方法访问
描述 | 关键字 |
---|---|
不允许外部直接通过new来创建对象 | private |
工具类不允许有public或default等构造方法 | |
类非static成员变量并且与子类共享 | protected |
类非static成员变量并且仅在本类使用 | private |
类static成功变量如果仅在本类使用 | private |
static成员变量 | 考虑是否为final |
类成员方法只供内部类调用 | private |
类成员方法只对继承类公开 | protected |
// 一般初始化大小的为(需要存储的元素个数 / 负载因子) + 1,
// 一般负载因子为0.75, 当无法确定初始值大小时,我们一般设置为16
HashMap<String> map = new HashMap<>(4);
原规范的说明: keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是hashMap 中取出key 所对应的 value 。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。如果是 JDK 8,使用 Map . foreach 方法。
在switch块内,每个case都得通过break/return停来止****
在if / else / for / while / do 语句中必须采用大括号,就算只有一行代码也得需要加括号
表达异常的分支时,少用 if-else 方式,如果一定要写,避免维护困难,请勿超过3层
其实阿里巴巴的Java开发规范远不止上述这一点内容,具体大家可以去网上找一下资源,下载过来看看,如果觉得太麻烦的话,可以在日常练习中练习好规范
IDEA中使用alibaba的开发规范
在IDEA的插件市场中安装–》工具–》阿里巴巴编码规约,就可以提示你啦