java - 分枝效率

标签 java

几周前,我提交了一个代码审查函数,如下所示。

Function{
If (condition)
Else If (condition)
Else if (condition)
Else
return value
}

我的代码审查负责人说“我讨厌 else if”,但他没有说明原因或我应该做什么。他刚刚允许我上传这个函数。

我的问题是,有哪些替代方案可以替代一堆“else if”,使代码看起来更优雅,并且性能可能更好?

我尝试提取他的代码来了解他会做什么,我注意到他多次这样做

If (condition)
If (condition)
If (condition)

我应该避免写“else”吗?我本来想问他的,但他已经不在这里工作了。

谢谢

最佳答案

我尽量避免使用“else”、“else if”以及“if”和“for”。在我看来,分支和循环增加了代码的复杂性。但这每次都取决于你想做什么。一些例子:

如果你这样做:

if fruit.isBanana() then fruit.eatBanana()
else if fruit.isOrange() then fruit.eatOrange()
...

除此之外,您还可以使用继承:

class Banana extends Fruit {
    function eat() {
        ... yum yum yum banana ...
    }
}
class Orange extends Fruit {
    function eat() {
        ... yum yum yum orange ...
    }
}

然后,如果您有一个实例:

fruit.eat()

另一个例子:如果使用“if”和“for”进行过滤:

longFruits = []
for fruit in fruits {
    if fruit.isBanana() then longFruits.add(fruit)
}

然后你可以使用collections相反:

longFruits = CollectionUtils.select(fruits, Precicate.isBanana)

这只是几个示例和技术。

关于java - 分枝效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229808/

相关文章:

java - 如何避免Eclipse在把类名放在注释的时候引入一个类,让checkstyle后面不报错?

java - 求一组方程的整数解,其中未知数多于方程

java - 为什么 µ 在 Java 中似乎是有效的变量名,但在 Groovy 中却不是?

Java - 格式化日期

java - 如何模拟 Throwable 对象?

java - 如何每5秒发送一次HttpPost

java - 难以理解何时应该/需要使用位移位的示例

java - 我为什么要学习和使用struts?

java - 如何从返回字符串的方法终止

java - 打印特定于字符的行,相当于 Java 中的字符串