我最近刚开始是一名开发人员,但我的代码编写方式仍有点困难。
有没有更好的方法来写这两个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中。
您似乎不关心item.getContentModificationOnly()
在第二个if语句中是true还是false,因为您的代码是(Boolean.TRUE.equals(item.getContentModificationOnly()) || Boolean.FALSE.equals(item.getContentModificationOnly())
。所以,如果你的逻辑是正确的,我建议你这样编码:
if (fore) {
this.assignmentService.deleteAssignmentsByItem(item);
this.configurationInstanceRepository.deleteByItem(item);
this.configurationItemRepository.deleteById(itemId);
} else if (Boolean.TRUE.equals(item.getContentModificationOnly()) {
throw new ContentModificationOnlyException("Configuration Item cannot be deleted");
}
第一个条件
if (item.getContentModificationOnly() && !force) {
第二个如果条件
if ((item.getContentModificationOnly() || !item.getContentModificationOnly()) && force) {
以下代码将始终返回真正的
(item.getContentModificationOnly() || !item.getContentModificationOnly())
因此,如果stmnt仅为,则将second修改为
if (force)
{
取决于返回类型item.getContentModificationOnly()
。如果是Boolean,则第二条语句可以简化为
if(item.getContentModificationOnly() != null && force)
如果item.getContentModificationOnly()
的返回类型是boolean,则该语句可以简化为
if(force)
以及上面@LiLittleCat的答案(如果正确(。