0

我对某些事情有点困惑,如果你们都能对此有所了解,我将不胜感激。我有一个类支付,它有一些方法和 getter/setter。例如,我是使用 ItemCost 方法返回属性 itemCost 的阀门还是使用 getter?

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) 在另一个类中

做:payment.itemCost(quantity, itemPrice) payment.getItemcost

?

编辑 2:让所有方法都返回 void 并且只使用 getter 是更好的编码吗?

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 原则之一)。

当您进行任何计算(或)业务逻辑时,最好使用适当的操作名称而不是 get/set。

编辑:

正如 neel 评论的那样,它总是建议将 POJO 保留为简单的 bean,而不是填充业务逻辑/计算。您可能有另一个具有业务逻辑的类,并在进行计算时使用 get/setter 从 POJO 获取值。

于 2012-10-19T15:03:59.107 回答
0

一般来说,应该是possible仅仅从你的方法名称就可以理解你的方法应该做什么。

因此,您应该使用getterssetters仅当您想要返回或设置您的类的属性时。这样你的代码看起来更具可读性,并且the name清楚methods地说明了它会做什么。

但是,如果您的方法不是返回确切的属性,而是返回一些计算的结果,那么您应该相应地命名您的方法。

例如: -如果您的方法返回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;
}

理想情况下,您将有一种设置方法,但如果您希望类像这样工作,我建议让这两种方法都返回void并用于getItemCost获取值。

于 2012-10-19T15:13:21.960 回答