请原谅挑衅性问题标题。众所周知,你永远不应该在Java程序中使用公共字段(除了类似结构的类,你应该避免使用它)。但人们谈论硬币的另一面 - 私人方法。
我看到它的方式是:如果你有私有方法,那么你正在编写本地程序代码。具有私有字段的Java类与调用许多私有方法的一些公共方法以及具有全局变量和一些函数的C模块之间基本上没有区别,其中一些函数在其他地方extern
编辑(除了你无法实例化C模块的相当大的区别。鉴于很多关心良好Java实践的人都认为你应该尽可能远离程序性的工作,我很惊讶没有更多的指导方针限制私有方法的使用。
请注意,我不想暗示任何人都认为永远不应该使用私有方法(或者它们实际上和公共字段一样糟糕)。但这是我的问题,我尽量使其尽可能客观:
答案 0 :(得分:9)
是否存在限制私有使用的标准Java准则 方法
没有
恰恰相反 - private
应该是private
。类中的许多private
方法绝不是坏习惯(只要类本身不太长)。接口应该只提供外部类可用的方法。私下内部发生的事情是没有人的事。
实际上,有一个简短的public
方法和一些私有方法(即使它们没有被重复调用)实际上要好得多,因为它提高了可读性并对一种公共方法进行了高级概述。如果你有一个public
方法可以分成多个独立的部分,你可以命名这些部分,然后去做。使用私人方法。
答案 1 :(得分:3)
一般来说,我不认为私有方法是代码中的设计缺陷。当一个人应该做很多计算并且他们被迫编写复杂的长方法时,他们可以将它分成更小的(私有)方法。如果要在类的许多部分(方法)中使用私有方法,则好处更广泛。它不优雅,不建议重复相同的代码。
答案 2 :(得分:2)
私有方法和公共字段一样糟糕吗?
没有好的和坏的问题。它严格基于您的项目设计要求。的期。强>
如果您想要任何仅由定义类使用的函数,并且不应该将其暴露给其他类,您只需将其定义为私有。从另一个角度来看,为什么要公开一种在课堂外无意义的方法,将其公之于众。
答案 3 :(得分:1)
没有。无论如何,private
方法设计都不错。它们是很好的设计,原因与你不想要public
字段的原因相同。这个原因就是封装。
private
方法通过保护代码免于从类外部调用来启用封装。此限制允许您保证对象的状态。
使用private
方法并不像程序语言那样。要在OO语言中实现过程语言的效果,可以在static
字段上运行static
个方法。
public static CUnitEquivilent // Don't do this!
{
private static int SomeVariableDefinedInCFile;
public static int SomeVariableDefinedInHeader;
private static SomeMethodDefinedInCFile(...){...}
public static SomeMethodDefinedInHeader(...){...}
}
答案 4 :(得分:0)
不,他们为什么要这么糟糕?我们鼓励他们,因为您可以拆分public
方法,而不是拥有200行或更多的方法,并在class
中重复使用同一批代码。
一个缺点是您无法测试您的private
方法,但实际上您不应该这样做。因为它们不打算进行测试。 (public
方法是要测试的。)