JAVA实战规范总结

1.为了可维护性,不要过度追求代码简单

  尽量所见即所得,不要复用变量
  一个方法只专注一件事情,不要多加其他逻辑的代码

2.Getter Setter的规则

  对外暴露接口时才用,内部类的直接对字段进行操作即可

3.接口设计原则

尽量少暴露东西,不用过多的返回值

4.所有的条件语句最好都用{}括起来

    只有一条判断也是
    if (a>b) {
    b=2;
    }

5.mysql数据库update更新记得检查where,

不然就呵呵了

update book set status=-1
#这样子所有的行的都会受影响
update book set status=-1 where id=1

6.String.split(“o”,-1)分割坑

java使用split(“o”),调用的有个坑,最后的空值都不会保存trailing empty strings will be discarded,这与常识不一致 QAQ
原因是split(“o”)实际掉用的是split(“o”, 0), 所以直接使用String.split(“o”,-1)即可

Regex Limit Result
: 2 {@code { “boo”, “and:foo” }}
: 5 {@code { “boo”, “and”, “foo” }}
: -2 {@code { “boo”, “and”, “foo” }}
o 5 {@code { “b”, “”, “:and:f”, “”, “” }}
o -2 {@code { “b”, “”, “:and:f”, “”, “” }}
o 0 {@code { “b”, “”, “:and:f” }} 尾部不见了

7.HashMap使用自定义类,必须实现hashCode方法和equals方法

HashMap HashSet中自定义的类,必须实现hashCode方法和equals方法,否则无法使用
Object默认的hashCode对每个对象都不一样,跟期望的值不一样

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. 
equals相等的对象,hashcode必须相等

8.HashMap选择

LinkedHashMap方便迭代,迭代性能++
HashMap容量太大时,迭代了无用元素,迭代性能—

9. list中排序不能有null对象

Collections.sort(list);
但是调用时,null对象直接调用compareTo方法出错(对象实现了comparable接口的),报NullPointerException
解决办法是自己实现一个Comparator

ArrayList<String> list = new ArrayList<String>();
        list.add(null); //默认排序不能有空
        list.add("2");
        Collections.sort(list);

10.foreach的对象不能为null,也直接remove

foreach是基于iterator的,是null会NPE, 先做前置判断
同时在直接remove也会导致迭代的一场
可以用Apache Commons Collections4的接口CollectionUtils.emptyIfNull

https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2
for (I #i = Expression.iterator(); #i.hasNext(); ) {
    {VariableModifier} TargetType Identifier =
        (TargetType) #i.next();
    Statement
}
Set<Long> longSet = null;
    if (longSet != null) { //先做前置判断,防止NPE
        for (Long aLong : longSet) {
            System.out.println("for");
        }
    }
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值