elunez / eladmin

eladmin jpa 版本:项目基于 Spring Boot 2.6.4、 Jpa、 Spring Security、Redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由
https://eladmin.vip/demo
Apache License 2.0
21.14k stars 7.34k forks source link

[代码优化] assert 断言可能的问题, 以及 argList 调用方法优化, RedisConfig 的注释与代码不一致问题 #705

Closed chong-chonga closed 2 years ago

chong-chonga commented 2 years ago

LogServiceImpl.java

  1. 断言不适合用于参数验证,因为断言可以在JVM中的运行时被禁用,这意味着错误的操作设置将完全消除预期的检查。此外,失败的断言会抛出断言错误,而不是抛出某种类型的异常。因此 Assert 如果抛出异常, 则难以排查。使用 if 代替 断言, 并抛出 IllegalArgumentException 更可控
  2. collection 接口实现类调用 isEmpty() 方法比 size() == 0 更可读

RedisConfig.java

  1. 注释写的是 默认两小时, 但是代码写的是 6 小时, 所以应以哪一个为标准 ?
  2. 当没有出现碰撞时, 固定的 3个 kv 对, size 达到 3 个, 如果方法参数不为空, 则会触发 HashMap 扩容, 影响性能3 + params.length > (2^2 * 0.75 = 3) 3 仍然引用的是 apache 的方法, 为了去除歧义, 应使用全类名指定 如果方法返回值包含 null, 则加上 @nullable 注解, 代码更易读

LimitAspect.java 传给 replaceAll 的参数不是正则表达式, replaceAll 和 replace 效果是一样的, 且 replaceAll 由于会调用 ava.util.regex.Pattern.compile()方法, 导致性能消耗更大, 故修改为 replace() 更好