4

説得力のある情報を見つけることなく、私が考えていた設計上の問題が発生しました。

クラスにいくつかのインスタンス変数があると仮定して、その値を使用してクラスのプライベート機能を書きたいとします。そのようなものを書くことは問題ではありません:

public class Example{

    private String attribute1;

    public void setAttribute1(String att){
        this.attribute1 = att;
    }

    private void processAttribute(){
        //do something with attribute1
    }

    public void executeExample(){
        processAttribute();
    }

}

WhereprocessAttribute()attribute1値を内部的に使用します。ただし、多くのドキュメントでは、グローバル変数の使用を制限する必要があると述べています。このようなものを書くことは、より再利用可能で適切に設計された方法でしょうか?

public class Example{

    private String attribute1;

    public void setAttribute1(String att){
        this.attribute1 = att;
    }

    private void processAttribute(String att){
        //do something with attribute1
    }

    public void executeExample(){
        processAttribute(this.attribute1);
    }

}

アイデアをプールします。

4

3 に答える 3

2

グローバルな状態に対する議論の多くは、ここにも当てはまります。

  • 属性が processAttribute メソッド以外の場所で使用されている場合、プログラムの正確性について推論するのが難しくなります。
  • グローバル状態を使用するコードを並列化するのは困難です: 処理中に属性が変更された場合はどうなるでしょうか?
  • 詳細: http://c2.com/cgi/wiki?GlobalVariablesAreBad

一方、これはプライベート メソッドであり、クラスの契約を履行する限り、好きなように自由に実装できます。

于 2013-06-26T07:33:05.533 に答える