反例:
- public class User {
- public static final String CONST_NAME = "name";
- ...
- }
-
-
- User user = new User();
- String nameKey = user.CONST_NAME;
正例:
- public class User {
- public static final String CONST_NAME = "name";
- ...
- }
-
-
- String nameKey = User.CONST_NAME;
不要用NullPointerException判断空
空指针异常应该用代码规避(比如检测不为空),而不是用捕获异常的方式处理。
反例:
- public String getUserName(User user) {
- try {
- return user.getName();
- } catch (NullPointerException e) {
- return null;
- }
- }
正例:
- public String getUserName(User user) {
- if (Objects.isNull(user)) {
- return null;
- }
- return user.getName();
- }
使用String.valueOf(value)代替""+value
当要把其它对象或类型转化为字符串时,使用 String.valueOf(value) 比""+value 的效率更高。
反例:
- int i = 1;
- String s = "" + i;
正例:
- int i = 1;
- String s = String.valueOf(i);
过时代码添加 @Deprecated 注解
当一段代码过时,但为了兼容又无法直接删除,不希望以后有人再使用它时,可以添加 @Deprecated 注解进行标记。在文档注释中添加 @deprecated 来进行解释,并提供可替代方案。
正例:
- /**
- * 保存
- *
- * @deprecated 此方法效率较低,请使用{@link newSave()}方法替换它
- */
- @Deprecated
- public void save(){
- // do something
- }
让代码远离 bug
禁止使用构造方法 BigDecimal(double)
BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
反例:
- BigDecimal value = new BigDecimal(0.1D); // 0.100000000000000005551115...
正例:
- BigDecimal value = BigDecimal.valueOf(0.1D);; // 0.1
返回空数组和空集合而不是 null
返回 null ,需要调用方强制检测 null ,否则就会抛出空指针异常。返回空数组或空集合,有效地避免了调用方因为未检测 null 而抛出空指针异常,还可以删除调用方检测 null 的语句使代码更简洁。
反例:
- public static Result[] getResults() {
- return null;
- }
-
-
- public static List<Result> getResultList() {
- return null;
- }
-
-
- public static Map<String, Result> getResultMap() {
- return null;
- }
-
-
- public static void main(String[] args) {
- Result[] results = getResults();
- if (results != null) {
- for (Result result : results) {
- ...
- }
- }
-
-
- List<Result> resultList = getResultList();
- if (resultList != null) {
- for (Result result : resultList) {
- ...
- }
- }
-
-
- Map<String, Result> resultMap = getResultMap();
- if (resultMap != null) {
- for (Map.Entry<String, Result> resultEntry : resultMap) {
- ...
- }
- }
- }
(编辑:ASP站长网)
|