我的 Spring Boot 应用程序实现了一个Service
类,该类从RestController
. 这个服务方法负责更新一个实体。
由于要更新的字段很多,为了更好的可读性,我将更新逻辑分成了几个私有方法,如下所示:
@Transactional
public void updateUser(UserRequest userRequest) {}
final User user = userRepository.findById(userRequest.getId).orElseThrow(() -> new EntityNotFoundException()));
updateUserFromRequest(user, userRequest);
}
private void updateUserFromRequest(User user, UserRequest userRequest) {
updateUserMainData(user, userRequest);
updateUserAdditionalData(user, userRequest);
}
private void updateUserMainData(User user, UserRequest userRequest) {
user.setProperty1(userRequest.getProperty1());
user.setProperty2(userRequest.getProperty2());
user.setProperty3(userRequest.getProperty3());
}
private void updateUserAdditionalData(User user, UserRequest userRequest) {
user.setProperty4(userRequest.getProperty4());
user.setProperty5(userRequest.getProperty5());
user.setProperty6(userRequest.getProperty6());
}
虽然这工作得很好,但将User
对象传递给私有方法感觉“尴尬” 。这种方法被认为是“良好实践”还是有其他模式?
一种可能性是User
通过添加update(UserRequest userRequest)
方法将这种复杂性隐藏在类本身中。不再User
被传递到私有方法中(这可能会被认为有副作用)。
如果您不想向实体类添加逻辑,另一种使其不那么“尴尬”的可能性是让所有updateXXXX()
方法返回更新的User
. 当然,这在实际中没有任何改变,但它暗示User
确实在方法中进行了更新,减少了一点“具有副作用的方法”的感觉。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句