Java开发规范

本文详细介绍了阿里巴巴的Java编程规约,包括命名规范、代码格式、OPP规约、集合处理和控制语句的使用建议。强调了常量定义、类成员访问控制以及集合初始化的重要性,同时提醒开发者遵循良好的编程习惯,如避免魔法值、合理使用空格和避免冗余代码。
摘要由CSDN通过智能技术生成

前言

下面的文章都是摘抄阿里巴巴的Java开发规范,如果已经阅读过该书的小伙伴们可以直接跳过了, 如果还没有阅读过该书的小伙伴可以去网上找找资源,或者下面直接评论我也可以分享出来,下面是我看时留下的一些笔记。

编程规约

命名

  1. 代码的命名严禁采用拼音和英文混合的形式

  2. 类名需要使用UpperCamelCase风格

MapPolo/ UserDo / 
  1. 方法名、参数名、成员变量和局部变量都统一采用lowerCamelCase风格
localHost / dishMapper
  1. 常量名全部大写,单词间用下划线隔开
MAX _ STOCK _ COUNT
  1. 抽象类使用Abstract或Base开头,异常类命名使用Exception结尾,测试类以需要测试的类名开头,以Test结尾
BaseUser / CommonException / UserServiceTest
  1. 类型和中括号紧挨相连来表示数组
int[] arrayDemo;
  1. 包名统一用小写,点分隔之间有且仅有一个自然语义的英语单词
com.dy.example.util
  1. 如果接口、类、方法使用了设计模式,在命名时需体现出具体的模式,有利于阅读者快速理解架构设计理念
public class OrderFactory;
  1. 接口的方法和属性不需要加任何修饰符号(public也不要加),保持代码的简洁性,加上有效的Javadoc注解,不再接口内定义变量,如果一定要定义变量,肯定是
    与接口方法相关,并且是整个应用的基础常量

    void commit();
    
  2. 对于Service和DAO类,暴露出来的一定是接口,内部的实现类用Impl的后缀与接口区别。

    UserServiceImpl 实现 UserService接口
    

    Service/DAO层方法规范

    获取单个对象的方法用 get 做前缀。

    获取多个对象的方法用 list 做前缀,复数形式结尾如:listObjects。

    获取统计值的方法用 count 做前缀。

    插入的方法用 save/insert 做前缀。

    删除的方法用 remove/delete 做前缀。

    修改的方法用 update 做前缀。

  3. 领域模型命名规约

    数据对象: xxxDO , xxx 即为数据表名

    数据传输对象: xxxDTO , xxx 为业务领域相关的名称

    展示对象: xxxVO , xxx 一般为网页名称

    POJO 是 DO / DTO / BO / VO 的统称,禁止命名成 xxxPOJO

常量定义

  1. 不允许任何未定义就出现的魔法值
  2. 在long或者Long类型赋值,数值后使用大写的L,不能是小写的l

代码格式

  1. 大括号{}为空,就简洁写成{}即可,不需要换行,不为空时;

    // 大括号内为空,简写成{}
    public void test(){};
    // 左大括号前不换行
    //左大括号后换行
    //右括号前换行
    public void test() {
    String test;
    public void test() {
     boolean flag = true;
     if(flag){
    
     } else {
    
     }   
    }
    //右大括号后还有else等代码则不换行,表示终止的右大括号后必须换行
    
  2. if/for/while/switch/do 等保留字与括号需要加一个空格。

  3. 任何二目、三目运算符的左右两边都需要加一个空格

  4. 注释的双斜线与注释内容之间需要有一个空格

// 这是注释,请注意双斜线后有一个空格
String ygb = new String();
  1. 单行字符数限制不超过120个, 超出需要换行。

    1)第二行相对第一行缩进4个空格,从第三行起,不再继续缩进

    2)运算符与下文一起换行

    3)方法调用的点符号与下文一起换行

    4)方法调用中的多个参数需要换行时,在逗号后进行

    5)在括号前不要换行

StringBuffer sb = new StringBuffer();
// 超过 120 个字符的情况下,换行缩进 4 个空格,点号和方法名称一起换行
sb.append("zi").append("xin")...
.append("huang")...
.append("huang")...
.append("huang");
  1. 方法参数在定义和传入时,多个参数逗号后必须加空格
method(args1, args2, args3);
  1. 单个方法的总行数不超过80行

OPP 规约

  1. 避免通过一个类的对象引用来访问此类的静态变量或静态方法,无需增加编译器解析成本

  2. Object的equals方法容易抛出NPE异常,应采用常量或确定有值的对象来调用eauals

"dy".equals(object);
  1. 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,需要放在自己写的init方法中。

  2. final关键字可以用来声明类、成员变量、方法、以及本地变量

    1. 不允许被继承的类,如: String类

    2. 不允许修改引用的域对象

    3. 不允许被重写的方法,如实体类的setter方法

    4. 不允许运行过程中重新赋值的局部变量

    5. 避免上下文重复使用一个变量,使用final描述可以强制重新定义一个变量,方便更好地进行重构。

  3. 类成员和方法访问

描述关键字
不允许外部直接通过new来创建对象private
工具类不允许有public或default等构造方法
类非static成员变量并且与子类共享protected
类非static成员变量并且仅在本类使用private
类static成功变量如果仅在本类使用private
static成员变量考虑是否为final
类成员方法只供内部类调用private
类成员方法只对继承类公开protected

集合处理

  1. 使用集合时,需要指定集合初始值大小
// 一般初始化大小的为(需要存储的元素个数 / 负载因子) + 1, 
// 一般负载因子为0.75, 当无法确定初始值大小时,我们一般设置为16
HashMap<String> map = new HashMap<>(4);
  1. 遍历Map集合时,采用entrySet遍历Map类集合,而不是KeySet方式进行遍历。

原规范的说明: keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是hashMap 中取出key 所对应的 value 。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。如果是 JDK 8,使用 Map . foreach 方法。

控制语句

  1. 在switch块内,每个case都得通过break/return停来止****

  2. 在if / else / for / while / do 语句中必须采用大括号,就算只有一行代码也得需要加括号

  3. 表达异常的分支时,少用 if-else 方式,如果一定要写,避免维护困难,请勿超过3层

最后

其实阿里巴巴的Java开发规范远不止上述这一点内容,具体大家可以去网上找一下资源,下载过来看看,如果觉得太麻烦的话,可以在日常练习中练习好规范

IDEA中使用alibaba的开发规范

在IDEA的插件市场中安装–》工具–》阿里巴巴编码规约,就可以提示你啦

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值