0

私は何かについて少し混乱しています。皆さんがこれを明確にすることができれば幸いです. いくつかのメソッドとゲッター/セッターを持つクラス支払いがあります。たとえば、メソッド ItemCost を使用して属性 itemCost のバルブを返すか、それともゲッターを使用するか?

public class Payment {
    private int itemCost, totalCost;

    public int itemCost(int itemQuantity, int itemPrice){
        itemCost = itemPrice * itemQuantity;
        return itemCost;
    }

    public int totalCost(BigDecimal itemPrice){
        totalCost = totalCost + itemCost;
        return totalCost;
    }

    public int getBalance(int clickValue, int totalCost){

        totalCost = totalCost - clickValue;
        return totalCost;
    }

    public int getTotalcost(){
        return this.totalCost;
    }    

    public void setTotalcost(int totalCost){
        this.totalCost = totalCost;
    }

    public int getItemcost(){
        return this.itemCost;
    }    

    public void setItemcost(int itemCost){
        this.itemCost = itemCost;
    }
} 

インスタンス化する代わりに: int cost = payment.itemCost(quantity, itemPrice) in another class

DO: payment.itemCost(数量, itemPrice) payment.getItemcost

?

編集 2: すべてのメソッドが void を返すようにし、ゲッターを使用するだけでコーディングが改善されますか?

public class Payment {
    private int itemCost, totalCost;

    public void calculateItemcost(int itemQuantity, int itemPrice){
        itemCost = itemPrice * itemQuantity;
    }

    public void calculateTotalCost(BigDecimal itemPrice){
        this.totalCost = totalCost + itemCost;
    }

    public void calculateBalance(int clickValue, int totalCost){
        this.totalCost = totalCost - clickValue;
    }

    public int getTotalcost(){
        return this.totalCost;
    }    

    public void setTotalcost(int totalCost){
        this.totalCost = totalCost;
    }

    public int getItemcost(){
        return this.itemCost;
    }    

    public void setItemcost(int itemCost){
        this.itemCost = itemCost;
    }
} 
4

3 に答える 3

2

getter/settersは、オブジェクトの特定の属性に値を設定し、オブジェクトから同じ値を取得することを目的としています。このようにして、属性をプライベートとして定義し、カプセル化を適用できます (OO 原則の 1 つ)。

計算 (または) ビジネス ロジックを実行しているときは、get/set の代わりに適切な操作名を使用することをお勧めします。

編集:

neel がコメントしたように、POJO をビジネス ロジック/計算に詰め込むのではなく、単純な Bean のままにしておくことが常に提案されています。ビジネス ロジックを持つ別のクラスがあり、計算中に get/setter を使用して POJO から値を取得する場合があります。

于 2012-10-19T15:03:59.107 に答える
0

一般に、possibleメソッドの名前だけから、メソッドが何をすることになっているのかを理解する必要があります。

そのため、クラスのプロパティを返すか設定する場合にのみgettersandを使用する必要があります。settersそうすれば、コードがより読みやすくなり、何をするかthe namemethods明確に示されます。

ただし、メソッドが正確なプロパティを返すのではなく、何らかの計算の結果を返す場合は、それに応じてメソッドに名前を付ける必要があります。

例: -costメソッドがクラスのプロパティの計算として を返す場合、そのメソッドに という名前を付けますcalculateCost。それはもっと理にかなっています。

PS : - 覚えておいてください、あなたのコードは、作成にかかった時間よりも多くの時間維持されます。Code理解するためではなく、他の人が理解するyourselfために。

于 2012-10-19T15:03:34.020 に答える
0

現時点では、設定できるメソッドが 2 つありますitemCost

public void setItemcost(int itemCost){
    this.itemCost = itemCost;
}

public int itemCost(int itemQuantity, int itemPrice){
    itemCost = itemPrice * itemQuantity;
    return itemCost;
}

理想的には 1 つの設定メソッドが必要ですが、クラスをこのように機能させたい場合は、これらのメソッドの両方を返して値を取得するためにvoid使用getItemCostすることをお勧めします。

于 2012-10-19T15:13:21.960 に答える