重构三元运算符Java的最佳方式

问题描述 投票:0回答:1

isCredit
是常见的布尔值。请注意,我们在借方和贷方上设置相同的值(但交叉)取决于布尔值

 .setDebetSide(new DebetSideDto()
                        .setPayerINN(isCredit ? record.getInnContractor() : record.getClientInn())
                        .setPayerName(isCredit ? record.getNameContractor() : record.getClientName())  
.setCreditSide(new CreditSideDto()
                        .setReceiverINN(isCredit ? record.getClientInn() : record.getInnContractor())
                        .setReceiverName(isCredit ? record.getClientName() : record.getNameContractor())
java java-11 conditional-operator
1个回答
0
投票

尝试避免双重调用,因此在

if
构造中设置其他变量,然后使用这些变量调用两个函数:

var debitSideDto = new DebetSideDto();
var creditSideDto = new CreditSideDto();
if (isCredit) {
    debitSideDto.setPayerINN(
         record.getInnContractor()),
         record.setPlayerName(parecord.getNameContractor());
    ...
} else {
    ...
}

.setDebetSide(debitSideDto);

这里的一个批评是

debitSideDto
可能被设计为包含无效状态;需要调用 setter 才能达到有效状态。最好在构建时分配所需的值。在这种情况下,需要在
if
语句中调用构造函数。在
if
之前不必为变量分配任何值;只要编译器分配了一个值就可以 - 它甚至可以被声明为
final

© www.soinside.com 2019 - 2024. All rights reserved.