本文最后更新于 1584 天前,其中的信息可能已经有所发展或是发生改变。
new Date(xx.getTime() + 5 * 1000)
时间操作,请用日历类或 java 8 的时间类,减少多余new Date对象创建Arrays.asList(xx).stream()
自己看一下 Arrays.asList() 的源码吧,Arrays.stream(new Object[]{spVO}) 不香吗?创建单个元素的列表 Collections.singletonList() 也可以吧- if条件代码冗余
if(a&&b){
return true;
}
if(b&&c){
return true;
}
- VO 有定义的必要吗?
最高的原则是 PO 能直接返回的不需要转换成 VO - 创建的 cache 是本地缓存,请问现场部署双节点,添加或删除操作只能是一个节点处理,另一个节点如何刷新?
不用启动就装载吧,使用后缓存也挺香的吧?
//请注意这里,需要转换为List做保存
List<String> xx = JSON.parseArray(item.getxx(), String.class);
// 前端也需要特意处理 xx.js
item.xx = JSON.parse(item.xx);
- 上述代码中需要手动转换的,可以使用@Convert 注解完成转换,对业务逻辑代码没有侵入,前端后端无需强制转换。
@Convert(converter = StringToListConverter.class)
- 枚举类不要提供set方法
枚举类是jdk的一个语法糖,其本质是通过普通类实现的,只是编译器为我们进行了加工处理,每个枚举类型编译后的字节码实质都是继承自Java.lang.enum的枚举类型同名普通类,而每个枚举常量实质上是一个枚举类型同名普通类的静态常量对象,所有枚举常量都是通过静态代码块进行初始化实例赋值。
当用set方法进行赋值的时候,实际上是修改的一个内存中的静态变量的值,这个值原本的意义就被修改了,这时候如果其他地方再来判断,必然出错。 controller
可设置全局异常捕获统一处理, ``@ControllerAdvice @ExceptionHandler`- VO一般用于页面, 数据传输应使用DTO( 其实实例名都是对的 )
- xx 没有
override toString
方法, 直接通过log.error打印是看不到参数的 - 包内部不对外的实现类不要用
public
避免了到处乱引用的问题 - 该提取为工具类的要提取出来
与业务没有关系, 尽量不在service里面维护, 工具类该提还是得提 - 查库之前集合判空, 避免sql异常
- 实现类命名需要加上Impl区分