代码设计-CRUD总结

181 阅读1分钟

1.结果or异常

  1. 对于新增/修改,返回结果需不需要数据结果,还是直接返回true? 都可以,统一规范最重要

  2. 对于无法执行的操作,返回操作失败异常还是false? 最好是返回异常,利用Optional.orElseThrow()和全局异常处理,比如修改传入的ID是非法的.

2.数据安全权限

  1. 业务数据操作 对于多租户系统而言,单一数据操作如果仅通过主键ID并不可靠,最好通过继承的方式将租户的ID都写入到具体的业务表,然后操作的时候增加该条件.

  2. 用户信息 可以自定义一个用户上下文对象,注入方便取值.

3.数据校验放到controller还是service

都放是最可靠的,尤其是可能存在NPE的代码,因为service的method可能被多个地方调用. 可使用Spring Validated完成校验.

4.分页查询与restful风格

对于restful风格的接口而言,可能需要get接口完成分页查询,对于条件不多的,可以用get和query param实现,后台分别用两个vo接收(pageVO/dataVO),对于条件较多的查询来说,get请求参数不够直观,可以使用post,仅将page信息放置于query param或 path param

5. 避免死代码

  1. 尽可能定义常量替代直接四处使用的值
  2. 利用占位符%s或{},复用这些常量
  3. 不确定/易变的常量配置化
  4. 避免使用+等直接操作字符串