单行如果包含方法调用

时间:2013-02-28 14:32:56

标签: java

我有一个有条件地调用另一个的方法。例如:

public boolean contionallyDoSomething(boolean something){
    boolean didSomething = false;
    if(something){
        theSomething();
        didSomething = true;
    }
    return didSomething;
}

public void theSomething(){
    //do something
}

我想我可以把它改写成:

public boolean contionallyDoSomething(boolean something){
    boolean didSomething =something && theSomething();
    return didSomething;
}

public boolean theSomething(){
    //do something
    return true;
}

第二种方法感觉更整洁,我个人喜欢它。然而,我有点厌倦了编写这样的代码,它可能会回来咬我。有什么不好的方面?有什么优点/缺点?

由于

4 个答案:

答案 0 :(得分:1)

此代码的最大缺点,特别是如果它致力于共享存储库,则是可读性。 if statement branching可以轻松地将意图呈现在哪里 - 因为压缩的代码需要第二眼(对于凡人来说)来破译它正在做的事情。

至于优点,你可以编写更少的代码,在某种程度上,编译器会优化它以便更快地运行。

答案 1 :(得分:1)

你为什么不尝试这个?:

http://en.wikipedia.org/wiki/Strategy_pattern

所以它不会在将来咬你:)

答案 2 :(得分:0)

public boolean contionallyDoSomething(boolean something) {
    if (something) {
        theSomething();
    }
    return something;
}

当然这更有意义,而不是返回第二个布尔值,它将与通过的布尔值相同?

答案 3 :(得分:0)

你正在涉足主观水域。所有的优点和缺点都与可读性有关。就个人而言,我会更进一步,将其写成:

public boolean contionallyDoSomething(boolean something) {
    return something && theSomething();
}

但我发现代码的紧张性增加了可读性。其他人可能(并且将会)不同意。