2012-04-24 111 views
0

有什么更好的方式与private fieldprivate 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; 
} 
+1

如果你的'modifyPrice()'方法只能在这个类中使用(这似乎是因为'private'的可见性),我更喜欢第一个答案。 – sp00m 2012-04-24 13:00:31

+0

感谢您的建议,我也使用第一,但犹豫 – sergionni 2012-04-24 13:02:14

+1

@sergionni所以,不要犹豫;) – 2012-04-24 13:08:31

回答

2

是它优美的使用私有方法的内部私有字段或最好是把他们作为参数,从当调用私有方法公共方法?

我认为这是非常主观的,取决于你的偏好,也取决于具体情况。

一般情况下,这两种方法似乎有效的给我。从私有方法访问私有成员没有问题,并且将它作为参数传递没有问题。

至于具体的例子,我稍微比较喜欢第二个执行。私有方法是独立的,它不依赖于除参数之外的其他任何东西。这使得它更易于阅读,测试和重用。您可以推理该方法并争论其正确性,而无需知道什么是model以及它的方法如何工作。

0

你应该使用私有方法,当你不希望他们可以看到你是在课堂之外做实现。因此,如果要创建该类的一个实例,那么这个私有方法将会比不可访问。

至于私有字段,相同的逻辑。那么什么是Java真正的私有反正,你可以通过使用反射反正得到它..

+0

是的,这是很清楚的知名度。问题是关于“我应该在私有方法中使用私有字段,如果有可能将它们作为公共方法的参数传递” – sergionni 2012-04-24 13:03:20

+0

@sergionni这是Eli解释的偏好。 – ant 2012-04-24 13:05:40

1

这里是亲的和反对的,我可以了解:

这个版本...

private int formatPrice() { 
     // format model.getPrice() 
    } 

...可能避免了格式错误的东西作为代价的“问题”,并如果你在很多地方叫它,可能会节省几个字符。

这个版本...

private int formatPrice(int price) { 
     // format price 
    } 

...可用于格式化价格从不同来源(而不是仅仅从model.getPrice()),但电话是多罗嗦了一下,并没有什么可以阻止你在格式化某个整数,做不是代表的价格。


然而,在我看来,有没有这两种方法相差无几。当然,对于某个人来说,没有足够的区别显然是一种“更好的方式”。