• Java开发规范


    前言

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

    编程规约

    命名

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

    2. 类名需要使用UpperCamelCase风格

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

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

      UserServiceImpl 实现 UserService接口
      
      • 1

      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等代码则不换行,表示终止的右大括号后必须换行
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    2. if/for/while/switch/do 等保留字与括号需要加一个空格。

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

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

    // 这是注释,请注意双斜线后有一个空格
    String ygb = new String();
    
    • 1
    • 2
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 方法参数在定义和传入时,多个参数逗号后必须加空格
    method(args1, args2, args3);
    
    • 1
    1. 单个方法的总行数不超过80行

    OPP 规约

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

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

    "dy".equals(object);
    
    • 1
    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
    • 2
    • 3
    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的插件市场中安装–》工具–》阿里巴巴编码规约,就可以提示你啦

    在这里插入图片描述

  • 相关阅读:
    PHP:namespace 关键字和 __NAMESPACE__ 常量
    c++/win32实现模拟windows鼠标键盘操作
    Java网络编程
    es的安装
    努力一周,开源一个超好用的接口Mock工具——Msw-Tools
    FusionInsight MRS Flink DataStream API读写Hudi实践
    SELECT DISTINCT not in 改为使用 JOIN 操作
    uos服务器系统安装oracle11gR2
    java基于Springboot+vue大学社团管理系统 elementui
    Leetcode 剑指 Offer II 053. 二叉搜索树中的中序后继
  • 原文地址:https://blog.csdn.net/zly03/article/details/126192637