阿里编码规范常用记录

基础常用规约

命名

  1. 名字避免英文和拼音混用
  2. 驼峰式命名,类名大写开头,方法小写开头
  3. 常量全部大写,下划线分割
  4. 抽象类名使用Abstract或者Base开头;异常类Exception结尾;测试类Test结尾
  5. 类型与括号紧挨做数组,比如int[]
  6. Boolean类型属性名称避免使用isXXX,避免框架解析错误
  7. 包名小写,点分割
  8. 命名避免不规范的缩写
  9. 使用了设计模式,要命名时体现,比如xxxxFactory
  10. 接口中不免声明修饰符,public也不要,接口中避免定义变量
  11. 枚举类使用Enum后缀,成员名称全大写

各层命名规约:

  1. 获取单个对象,get前缀
  2. 获取列表,list做前缀
  3. 获取统计值,count做前缀
  4. 插入,save/insert做前缀
  5. 删除,remove/delete做前缀
  6. 修改方法用ipdate做前缀

常量

  1. long赋值,后面跟大写的L

  2. 常量按照功能分开维护,而不是一个大而全的常量类

  3. 工程内部共享常量,放在工程的constant目录下;

    包内共享的常量,放在包下单独的constant目录下

    类内共享的常量,类内private static final修饰

变量:

  1. 变量值固定且确定范围,可以采用enum类

格式

  1. 小括号内容与括号没有空格
  2. 运算符前后有空格
  3. 注释,双斜线与内容有且有一个空格
  4. 方法调用的点和名称一起换行;多个参数的时候,逗号后换行
  5. 单行120个字符
  6. 单个方法不要超过80行
  7. 需要时插入一个空行分隔,没必要多个空行分隔

OOP规约

  1. 复写方法,需要加@Overrride注解
  2. 避免使用类对象引用类的静态变量或者方法,使用类名访问
  3. 不使用过时的类或者方法
  4. 用常量或者有确定的值对象调用equals,避免Null异常
  5. 构造方法中,禁止业务逻辑,初始化放在init方法中
  6. 类内方法顺序:共有方法或者保护方法,私有方法,get/set方法
  7. 使用StringBuilder的append方法扩展字符串;使用 “”+""的方式,每次都会new StringBuilder对象,然后执行append操作,最后toString
  8. 控制访问,宽泛的访问范围不利于模块解耦

集合

  1. foreach,避免在foreach中对元素进行remove/add的操作。使用Iterator

     List<String> list = new ArrayList<>();
     list.add("1");
     list.add("2");
     System.out.println(list);
     Iterator<String> iterator = list.iterator();
     while (iterator.hasNext()) {
         String item = iterator.next();
         if ("2".equals(item)) {
             iterator.remove();
         }
     }
    

    如果是:

     List<String> list = new ArrayList<>();
     list.add("1");
     list.add("2");
     System.out.println(list);
     for (String item : list) {
         if ("2".equals(item)) {
             list.remove(item);
         }
     }
    
     这种写法报错:ConcurrentModificationException。(但是条件是“1”就不会报错)
    
  2. 推荐使用entrySet遍历Map类集合

控制语句:

  1. switch块得有default
  2. 避免单行的编码方式,比如 if(…) 执行语句
  3. 高并发场景,避免使用等于做判断条件,使用大于或小于
  4. 避免超过3层if-else。超过的使用卫语句,策略模式,状态模式等实现
  5. 避免在判断条件中执行复杂语句

比如:

final boolean existed = (file.open(fileName, "w") != null) && (...) 
                                || (...);

    if (existed) {....}

避免直接写道if条件中:

if((file.open(fileName, "w") != null) && (...) || (...)) {....}

注释

  1. 类,类属性,类方法的注释使用/**…*/,不得使用// …
  2. 抽象方法,注释,指出做什么事,实现什么功能
  3. 类添加创建者和创建日期
  4. 方法内部,单行注释使用//…,多行使用//注释
  5. 枚举类字段必须有注释
  6. 英文不行,用中文来注释
  7. 代码注释,代码会恢复使用,可以注释掉。否则就删掉
  8. 待办注释,TODO;错误,FIXME

其他

  1. 使用正则的时候,利用其预编译功能,不要在方法体内定义:

     Pattern pattern = Pattern.compile("规则") 
    
  2. 视图模板中避免加入复杂逻辑

  3. 垃圾代码及时清理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值