Java 编码规范


 

常用插件

阿里编码规范

阿里编码规范,即p3c开发规范:https://github.com/alibaba/p3c

安装阿里巴巴规范插件,会实时扫描代码,在右上角显示代码质量,一般要改到右上角的图标是绿色的√。也可以手动扫描,在控制台查看结果,可在根据提示直接在控制台进行修改。

 

Statistic 统计代码整体情况,可以查看注释率

重启IDEA生效,在控制台会有对应的栏目。

注释率只统计了单独注释,不会统计到和代码在同一行的注释。

 

注释原则

  • 注释要突出主要的业务流程
  • 核心方法必须提供注释
  • 条件判断、分支操作上尽量提供注释说明

 

if过多的问题

  • 尽量少使用嵌套的if…else
  • 尽量用if代替if…else,在if中可以用return、throw之类中断方法执行,减少分支数量,提高可读性
  • 单个if…else可以换为三目运算符?:
  • 如果是多个等值判断,可以使用switch或者策略模式代替
  • 多重判空可以使用Optional

 

避免出现空指针异常

1、使用对象之前进行初始化,或者使用时注意需不需要检查对象、对象的成员字段是否为null

  • xxx.equals(),参数可以为null,但调用方不能为null,否则会发生NPE,尽量把确定的不为null的作为调用方。
  • User[ ] arr = new User[10]; 只是创建了一个数组,但没有显式初始化数组元素,数组元素会初始化为该类型的默认初始值,比如int是0、引用类型是null,注意String的默认初始值是null,不是空串。
     

2、自动拆箱实质是调用包装类的xxxValue()方法,比如Integer的intValue(),如果包装类为null,自动拆箱会发生NPE

  • 将包装类型的变量赋给基本类型的变量时,需要注意拆箱时是否可能发生NPE;
  • 能使用基本类型就使用基本类型,更加高效且能避免NPE。
     

3、jdk自带的一些方法可能出现NPE,使用时需要注意

HashMap<String, Object> map = new HashMap<>();
map.put(null, "");
//NPE
map.putAll(null);


ArrayList<String> list = new ArrayList<>();
list.add(null);
//NPE
list.addAll(null);


HashSet<String> set = new HashSet<>();
set.add(null);
//NPE
set.addAll(null);
  • map的key可以为null,但添加整个Map中的全部键值对时,map不能为null。
  • list、set添加单个元素时,元素可以为null;但添加整个单例集合中的全部元素时,单例集合不能为null,原因时addAll()添加单例集合时会访问单例集合的成员。
     

4、方法尽量避免返回null,如果要返回null,需要在文档注释中写明,以提醒使用者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值