gpt4 book ai didi

java - 变量保存的最佳实践

转载 作者:行者123 更新时间:2023-12-02 12:35:48 26 4
gpt4 key购买 nike

有两个代码代码1:

if(isApplicable() || isGood()) {
//something
}

private boolean isApplicable() {
}

private boolean isGood() {
}

代码2:

boolean applicable = isApplicable();
boolean good = isGood();

if(applicable || good) {
//something
}

private boolean isApplicable() {
}

private boolean isGood() {
}

哪种方法是好的 Java 实践?对我来说,代码 1 接缝更干净,代码 2 接缝有额外的代码。 code2可以让远程调试变得简单。

最佳答案

为了概括您的问题,您询问两种形式:

// local variable form
Foo foo = methodReturningFoo();
Bar bar = methodTakingFoo(foo);

// inlined form
Bar bar = methodTakingFoo(methodReturningFoo());

大多数现代 IDE 都有一个快捷键,可以通过击键在这些之间进行重构:“内联”“提取局部变量”。两种重构都存在的事实表明,在不同的情况下,两者都是合适的。

内联到单个语句使代码更加紧凑,有时更具可读性。您可以看到正在发生的一切,而无需阅读来找出变量的设置位置。

这是一个很好的内联候选:

String name = customer.getName();
String greeting = createGreeting(name);

// ... becomes ...
String greeting = createGreeting(customer.getName());

提取局部变量将一个长语句变成两个(或更多)较短的语句。它还可以允许您重复使用一个值,而不是计算两次。

这是一个示例,我们将语句分成更小的 block 。

String greeting = createGreeting(greetingFactory.get(customer.getTitle()), customer.getName());

// ... becomes ...
Title title = customer.getTitle();
String name = customer.getName();
String greeting = createGreeting(greetingFactory.get(title), name));

...这是一个我们重用计算值的示例。

// doing the work twice
CustomerCategory category = findCategory(totalOrderValues(
customer.getOrders(currentMonth)));
List<Promotion> eligiblePromotions = findEligiblePromotions(totalOrderValues(
customer.getOrders(currentMonth)));

// ... becomes ...
BigInteger totalOrderValues = totalOrderValues(
customer.getOrders(currentMonth))
CustomerCategory category = findCategory(totalOrderValues);
List<Promotion> eligiblePromotions = findEligiblePromotions(totalOrderValues);
<小时/>

通常,更喜欢内联版本,直到您发现该行太长且复杂。然后提取一个局部变量(或提取一个方法)以使其更整洁。如果存储一个值以避免重复昂贵的计算是有意义的,那么就这样做。

关于java - 变量保存的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45162656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com