代码复查
本文最后更新于 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区分
作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇