4

同様の場合に、フィールドを使用する場合と使用しない場合について混乱しています。

1)私はそれを行うことができます:

public class myObject{

private int amount;

    public myObject(int amount) {

        this.amount = amount;
        doSomething();
    }

    private void doSomething(){
        //some code
    }
}

2)またはそれ:

public class myObject{

    public myObject(int amount) {

        doSomething(amount);
    }

    private void doSomething(int amount){
        //some code
    }
}

最初の例は私にはすっきりしているように見えますが、2番目の例はamount、フィールドではないため、オブジェクト内以外では使用されないことを自動的に示します。とにかく、特にそのようなコードを介して多くのオブジェクトと値を渡したい場合は、私の意見では、それはちょっと重い「ピンポン」テクニックのように見えます。

それで、オブジェクトの外部でそれらを必要としない場合でも、コンストラクター/メソッドパラメーターをフィールドとして保存する必要がありますか?

4

2 に答える 2

4

amount電話した後に必要ない場合はdoSomething(amount)、投稿した前の例よりも優先されます。

あなたamountが後の時点でオブジェクトの一部である場合、前者の「テクニック」を使用するのが論理的です。

これはあなたが従うことができる経験則です:

フィールドがクラスの終了状態を示す場合は、それをフィールドにします。

フィールドがクラスの一時的な状態を示している場合は、後者の「手法」を使用してください。

于 2013-02-04T19:52:50.083 に答える
1

フィールドは、オブジェクトの構造を定義します。いくつかの例を挙げると、人の名前またはアカウントの通貨のいずれかによって、それが表すエンティティの属性です。

それらはクラスの特定のインスタンスを定義し、グループではオブジェクトの現在の状態を定義します。これらの種類の属性は、複数回照会および更新されるため、フィールドに入れる必要があります。

その特定の値が意味を持つコンテキストを考慮する必要があります。それが特定のオブジェクトに深く関係し、オブジェクトが「存在する」限りそれに固執する必要がある場合、それはフィールドである可能性があります。それ以外の場合は、単なるメソッドまたはコンストラクターのパラメーターにすることができます。

于 2013-02-04T19:56:51.257 に答える