我在 equals 方法中有以下代码。
public boolean equals(Object o){
if (o == null) return false;
if (o == this) return true;
if (!(o instanceof Vertex)) return false;
return ((Vertex) o).label().equals(label);
}
我的 IDE 突出显示 if 语句并希望我基本上执行此操作
public boolean equals(Object o){
return (o != null) && ((o==this) || ((o instanceof Vertex) && ((Vertex) o).label().equals(label);
}
有人告诉我,编译器通常足够智能,可以进行优化,并且通常应该编写代码以提高可读性。因此,显然第二个代码示例不像第一个代码示例那么容易阅读。我的 IDE 是否只是令人烦恼,还是这样做有一些实际的性能优点?
最佳答案
首先,仅在您知道这是瓶颈时才进行优化,否则代码的可读性。
您可以检查字节码来查看,但我怀疑它们即使不完全相同,也非常接近。即使字节码存在细微差异,我也看到 JIT 编译器将内容优化到没有差异的程度。您始终可以进行性能测试来确定。
关于java 使用逻辑运算符代替 if-else if 进行返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637130/