大佬们, 请教一下关于 Java 后端 Service 层

查看 123|回复 13
作者:vyuai   
https://imgur.com/LRbzXFg
https://imgur.com/K3thJ6I
https://imgur.com/LyiGbsm
1.大佬们, 这样理解对嘛, 第二张图是我思考的, 开发 Service 需要考虑调用的情况嘛, 虽然 Controller 层进行了 @Valid, 如果自己或者别人直接调用 roleId 和 employeeIdList 还是会出现空指针, 是否还需要加上校验呢, 一般企业开发需要考虑到 service 自己和别人调用的情况嘛
vuevue   
为什不问问神奇 gpt 呢
wxw752   
我是加的,要防着同事一手
iintothewind   
public 方法, 对传入参数要做防御性判断, 并打印 log.
看你代码, 好像这两个都没做, 这在大厂恐怕不能通过 review.
上线出问题你都不知道是不是你代码自己的问题, 还是别人传入参数的问题.
vyuai
OP
  
@wxw752 大佬, 如果加上校验, 返回什么比较合适呢, 错误提示嘛
/**
     * 批量删除角色员工关系
     *
     * @param roleEmployeeUpdateForm
     * @return
     */
    public ResponseDTO batchDeleteRoleEmployee(RoleEmployeeUpdateForm roleEmployeeUpdateForm) {
        if (roleEmployeeUpdateForm.getRoleId() == null || CollectionUtils.isEmpty(roleEmployeeUpdateForm.getEmployeeIdList())) {
            ResponseDTO.error(UserErrorCode.PARAM_ERROR, "参数错误");
        }
        roleEmployeeDao.batchDeleteRoleEmployee(roleEmployeeUpdateForm.getRoleId(), roleEmployeeUpdateForm.getEmployeeIdList());
        return ResponseDTO.ok();
    } 类似这样嘛
vyuai
OP
  
@vuevue 问了, 但是很多场景不太理解, 有些也是看情况而定
vyuai
OP
  
@iintothewind 感谢大佬, 看来还是要考虑各个方面问题
iintothewind   
看上下文以及自己需求, 如果允许代码 break, 就抛 exception,
如果还有返回那就自己 handle, 返回约定的结果,
但重要是的是打印 log, 防止扯皮,
在大厂, 上线非常重要的是打印 log, 要不然你自己说不清楚, 出问题, 锅就是你的.
vyuai
OP
  
@iintothewind 日志的话, 一般打印错误日志和成功日志嘛, 如果发生异常有全局异常处理类做日志打印, service 层还需要打印吗
vyuai
OP
  
@iintothewind 好的, 感谢感谢
您需要登录后才可以回帖 登录 | 立即注册

返回顶部