提问人:Justin Xu 提问时间:6/27/2023 更新时间:6/27/2023 访问量:68
使用 return if 语句重构验证
Refactor validation with return if statement
问:
我有很多方法,在每个方法上我都必须进行验证。目前,我的代码看起来像这样,工作正常。
@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);
// ...
}
}
答: 暂无答案
评论
return