我最近开始作为一个开发人员,我仍然在努力与我写代码的方式有点。
有没有更好的方法来写这两个if语句?你会怎么写?为什么?
Java程式码:
@Override
@Transactional
public void deleteItem(final ConfigurationType type, final long itemId, final boolean force) {
this.applicationNameUtils.throwOnInvalidApplication(type.getApplication());
final ConfigurationItemModel item =
this.configurationItemRepository.findByApplicationAndTopicAndId(type.getApplication(), type.getTopic(), itemId)
.orElseThrow(() -> new ResourceNotFoundException(itemId, "Configuration Item"));
if (Boolean.TRUE.equals(item.getContentModificationOnly()) && Boolean.FALSE.equals(force)) {
throw new ContentModificationOnlyException("Configuration Item cannot be deleted");
}
if ((Boolean.TRUE.equals(item.getContentModificationOnly()) || Boolean.FALSE.equals(item.getContentModificationOnly())) && Boolean.TRUE.equals(force)) {
this.assignmentService.deleteAssignmentsByItem(item);
this.configurationInstanceRepository.deleteByItem(item);
this.configurationItemRepository.deleteById(itemId);
}
}
我不确定我是否能以某种方式在if-else中将这两者结合起来。
3条答案
按热度按时间6qfn3psc1#
因为你的代码是
(Boolean.TRUE.equals(item.getContentModificationOnly()) || Boolean.FALSE.equals(item.getContentModificationOnly())
,所以看起来你并不关心第二个if语句中的item.getContentModificationOnly()
是真还是假。所以如果你的逻辑是正确的,我建议你这样编写代码:yks3o0rb2#
第一个if条件
第二个If条件
下面的代码将始终返回true
因此将second if stmnt修改为仅
一个月一个月{
eufgjt7s3#
取决于返回类型
item.getContentModificationOnly()
。如果它是Boolan,那么第二条语句可以简化为如果
item.getContentModificationOnly()
的返回类型为Bolean,则该语句可以简化为和上面的@LiLittleCat的答案(如果正确)。