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;
}

2番目の方法はとてもすっきりしていて、個人的には気に入っています。しかし、私はこのようなコードを書くのに少しうんざりしています。欠点は何ですか?長所/短所は何ですか?

ありがとう

4

4 に答える 4

1

これを試してみませんか?:

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

だからそれは将来あなたを噛まないでしょう:)

于 2013-02-28T14:37:56.853 に答える
1

このコードの最大の欠点は、特に共有リポジトリにコミットされている場合の可読性です。簡単に意図をレンダリングしますif statement branchingが、圧縮されたコードは、それが何をしているのかを解読するために(単なる人間の場合)再確認が必要です。

利点としては、記述するコードが少なくなり、コンパイラーがコードを最適化して高速に実行できるようになります。

于 2013-02-28T14:36:29.250 に答える
0

あなたは主観的な水域に足を踏み入れています。すべての長所と短所は読みやすさに関係しています。個人的には、さらに一歩進んで、次のように記述します。

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

しかし、コードの緊密さが読みやすさを向上させることがわかりました。他の人は同意しないかもしれません(そしてそうするでしょう)。

于 2013-02-28T14:42:08.747 に答える
0
public boolean contionallyDoSomething(boolean something) {
    if (something) {
        theSomething();
    }
    return something;
}

確かに、通過したものと同じになる2番目のブール値を返す代わりに、これはより理にかなっていますか?

于 2013-02-28T14:36:41.820 に答える