Bài viết phổ biến của tác giả
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我确实有以下声明:
isEnabled = false;
if(foo(arg) && isEnabled) {
....
}
public boolean foo(arg) {
some really long running code
}
交换 if 中的语句是否有意义?
if(isEnabled && foo(arg)) { ... }
还是编译器为我优化?
1 Câu trả lời
请注意,如果 foo()
也有 side effects,则这两个表达式的行为不同.
如果它正在操纵程序的状态,那么如果您始终调用它,或者如果您仅将它作为 isEnabled
值的依赖项来调用它,就会产生很大的不同。
例如,考虑:
boolean foo(Object arg) {
someLocalVariable = arg;
//do some calculation and return an answer
}
如果你总是调用foo()
,或者你只在isEnabled
打开的情况下调用它,这很重要,导致以下两个表达式彼此完全不同:
if (isEnabled && foo(arg)) { ...} //local variable changes only if isEnabled==true
if (foo(arg) && isEnabled) { ...} //local variable always changes
关于Java If 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30504850/
Tôi là một lập trình viên xuất sắc, rất giỏi!