防御性变成

在开发的过程中,正常的业务需求通常来说都是不太复杂,主要的时间大多数都是花费在如何正确的处理异常逻辑。

下面列举几个常见的:

  1. Jackson 的序列化

    在目前 JDK8 的大量普及下,很多新的项目重构都会优先选择 LocalTime 或者 LocalDateTime 作为入参的类型,好处就是调用方不用关心时间格式问题。

    在之前项目中,很多时间都是定义为 String,

    例如:Jackson默认的LcoalTime 格式是 HH:mm,而如果你提供的是 HH:mm:ss,那么就会直接反序列化失败,所以在一些项目的开发过程中,需要注意的一点就是尽量对日期或者时间的字符串做一个标准化的检查,从而避免导致业务的一场。

  1. 对DB的操作一定要慎重
    在代码中经常可以看到一些查询的语句会有各种条件组合,所以这一部分也是最容易遗漏的地方。要尽可能的避免在某些条件组合下导致的全表查询,以及查询的数据量过大的情况。
    如果可以在业务上就预估出最大的查询量,适当的加上 limit 可以有效避免 拖垮DB 或者 OOM 的情况发生。

  2. 避免返回null
    对于一些集合类型的返回值,尽量返回一个空集合来代替null,java.util.Collections#emptyList()