0

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

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

4 回答 4

1

这段代码的最大缺点是可读性,尤其是当它提交到共享存储库时。易于呈现意图,if statement branching因为压缩的代码需要第二次查看(对于普通人)来破译它在做什么。

至于优点,好吧,您编写的代码更少,并且在某种程度上编译器对其进行了优化以更快地运行。

于 2013-02-28T14:36:29.250 回答
1

你为什么不试试这个?:

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

所以它将来不会咬你:)

于 2013-02-28T14:37:56.853 回答
0
public boolean contionallyDoSomething(boolean something) {
    if (something) {
        theSomething();
    }
    return something;
}

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

于 2013-02-28T14:36:41.820 回答
0

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

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

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

于 2013-02-28T14:42:08.747 回答