私人领域的公共方法
问题描述:
有什么更好的方式与private field
和private methods
工作过他们吗?私人领域的公共方法
是它优美的使用私有方法的内部私有字段或最好是把他们作为参数,从公开的方法,当调用私有方法?
领域:
private Item model;
公共方法:
...
if (model.getPrice() != null) {
String formattedPrice = formatPrice();
}
...
私有方法:
private int formatPrice(){
int price = model.getPrice() + 10;
}
VS
2. 公共方法:
if (model.getPrice() != null) {
String formattedPrice = formatPrice(model.getPrice());
}
...
私有方法:
formatPrice(int price){
int price = price + 10;
}
答
是它优美的使用私有方法的内部私有字段或最好是把他们作为参数,从当调用私有方法公共方法?
我认为这是非常主观的,取决于你的偏好,也取决于具体情况。
一般情况下,这两种方法似乎有效的给我。从私有方法访问私有成员没有问题,并且将它作为参数传递没有问题。
至于具体的例子,我稍微比较喜欢第二个执行。私有方法是独立的,它不依赖于除参数之外的其他任何东西。这使得它更易于阅读,测试和重用。您可以推理该方法并争论其正确性,而无需知道什么是model
以及它的方法如何工作。
答
这里是亲的和反对的,我可以了解:
这个版本...
private int formatPrice() {
// format model.getPrice()
}
...可能避免了格式错误的东西作为代价的“问题”,并如果你在很多地方叫它,可能会节省几个字符。
这个版本...
private int formatPrice(int price) {
// format price
}
...可用于格式化价格从不同来源(而不是仅仅从model.getPrice()
),但电话是多罗嗦了一下,并没有什么可以阻止你在格式化某个整数,做不是代表的价格。
然而,在我看来,有没有这两种方法相差无几。当然,对于某个人来说,没有足够的区别显然是一种“更好的方式”。
如果你的'modifyPrice()'方法只能在这个类中使用(这似乎是因为'private'的可见性),我更喜欢第一个答案。 – sp00m 2012-04-24 13:00:31
感谢您的建议,我也使用第一,但犹豫 – sergionni 2012-04-24 13:02:14
@sergionni所以,不要犹豫;) – 2012-04-24 13:08:31