effective java总结其一

对象

  1、equals、hashCode覆盖

     1.1、hashCode、equals方法必须同时覆盖

     1.2、覆盖equals必须满足自反性、对称性、一致性、非空性;相互equals的对象hashCode必须相同

     1.3、最好使用lombok、AutoValue生成equals、hashCode方法

     1.4、如果对象有放到集合比如ArrayList、HashSet的情况,最好覆盖equals、hashCode方法

  2、toString必须覆盖

  3、使用lombok避免样板式代码

      常见的方法setXXX、getXXX、toString、hashCode以及builder模式都可以通过lombok实现

  4、构造方法

     4.1、构造函数的参数列表不要过长(>6)。如果需要构造多个字段的对象,可以考虑使用builder模式。

     4.2、不需要构造的类,需要私有化构造函数

  5、 其它

     5.1、 谨慎使用clone方法

     5.2、try-resources优先于try-finally

     5.3、避免创建不必要的对象

     5.4、比较相等使用equals,不要使用==。另外使用常量equlas变量,避免NPE

              基本类型的包装类型

范型

   1、不要使用原生类型

   2、优先使用范型

        涉及一些算法处理;自定义数据结构

   3、谨慎并用泛型以及可变参数

   4、了解每一种集合类型的使用场景,选取适合的集合类型。如果有并发操作,需要考虑线程安全的集合。

         再次强调,需要注意包装类的影响;注意可能OOM的可能性,因为java集合没有严格限制集合的大小。

   5、考虑使用Guava Collection或者Apache Collections

异常

   1、不要捕捉RunTimeException、Throwable、Exception

   2、尽量使用jdk自带异常

   3、处理异常

       3.1、异常转义

       3.2、异常上下文

       3.3、 对象原子性

                 事务一致性

       3.4、spring异常处理器

方法

   1、检查参数有效性

        注意检查响应结果

   2、必要时进行保护性拷贝

        拷贝时注意合适的拷贝深度

   3、谨慎设计参数签名

        避免过长的参数列表、最好不用使用map作为参数、注意缩写、参数类型最好使用接口

   4、慎用重载

   5、返回空数组、集合、Optional,而不是null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值