代码之家  ›  专栏  ›  技术社区  ›  Justin Xu

使用return if语句进行重构验证

  •  0
  • Justin Xu  · 技术社区  · 2 年前

    我有很多方法,每种方法我都要进行验证。目前,我的代码是这样的,并且运行良好。

    @Service
    public class UserService {
        @Autowired
        private UserValidation userValidation;
    
        public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
            List<ErrorCode> errors = userValidation.validateUserLoginRequest(request);
            if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
            // ...
        }
    
        public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
            List<ErrorCode> errors = userValidation.validateUserRegisterRequest(request);
            if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
            // ...
        }
    
        public BaseResponse<User> view(String username) {
            List<ErrorCode> errors = userValidation.validateUserUsernameExists(username);
            if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
            // ...
        }
    
        public BaseResponse<Void> edit(UserEditRequest request) {
            List<ErrorCode> errors = userValidation.validateUserEditRequest(request);
            if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
            // ...
        }
    }
    

    然而,我很好奇有没有一种方法可以重构代码,这样我就不需要在每个方法上重复if语句了。下面的代码是我试图实现的,但我不知道如何实现。知道如何将上面的代码转换为下面的代码吗?另一种重构解决方案非常受欢迎。

    (或者我应该坚持上面的代码吗?为什么?)

    @Service
    public class UserService {
        @Autowired
        private UserValidation userValidation;
    
        public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
            userValidation.validateUserLoginRequest(request);
            // ...
        }
    
        public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
            userValidation.validateUserRegisterRequest(request);
            // ...
        }
    
        public BaseResponse<User> view(String username) {
            userValidation.validateUserUsernameExists(username);
            // ...
        }
    
        public BaseResponse<Void> edit(UserEditRequest request) {
            userValidation.validateUserEditRequest(request);
            // ...
        }
    }
    
    0 回复  |  直到 2 年前
    推荐文章