公共方法的私有方法

我正在检查StringTokenizer.java类,我想到了一些问题。

我注意到其他类使用的公共方法调用了一些完成所有工作的私有方法。 现在,我知道OOD的原则之一就是尽可能多地隐藏并隐藏所有实现细节。 我不确定我是否完全理解这背后的逻辑。

我理解,将字段设为私有以防止将无效值存储在其中非常重要(这只是众多原因之一)。 然而,当谈到私人方法时,我不确定它们为何如此重要。

例如,在StringTokenizer类的情况下,我们不能将所有实现代码放在公共方法中吗? 它如何对使用这些方法的类产生影响,因为这些方法的API(即调用这些公共方法的规则)将保持不变? 我能想到私有方法有用的唯一原因是因为它可以帮助你编写重复的代码。 例如,如果所有公共方法都做了同样的事情,那么您可以声明一个执行此任务的私有方法,并且可以由公共方法使用。

其他问题,在私有方法中编写实现而不是公共方法有什么好处?

这是一个小例子:

 public class Sum{ private int sum(int a, int b){ return a+b; } public int getSum(int a, int b){ return sum(a,b); } } 

VS …

 public class Sum{ public int getSum(int a, int b){ return a+b; } } 

第一个样本如何更有益?

为了添加一些东西,私有方法总是可以安全地更改,因为你肯定知道只能从自己的类调用,没有外部类能够调用私有方法(他们甚至看不到它)。

因此,拥有私有方法总是很好,因为您知道更改它没有问题,即使您可以安全地向该方法添加更多参数。

现在考虑一个公共方法,任何人都可以调用该方法,因此如果添加/删除参数,则还需要更改对该方法的所有调用。

我能想到私有方法有用的唯一原因是因为它可以帮助你编写重复的代码。

除了合并重复的代码(通常表示为“不要重复自己”或“干”),使用私有方法还可以帮助您构建和记录代码。 如果您发现自己编写的方法可以执行多项操作,您可以考虑将其拆分为多个私有方法。 这样做可以使每个逻辑的输入和输出更清晰(更精细)。 此外,描述性方法名称可以帮助补充代码文档。

在用Java或任何其他面向对象的语言编写干净的代码时,通常最干净最易读的代码由简洁的方法组成。 通常会出现一种方法中的逻辑可以在单独的方法调用中更好地表达,以使代码更清晰,更易于维护。

考虑到这一点,我们可以设想您有多种方法可以针对单个目标执行任务的情况。 想象一个只有一个复杂目的的类。 该单个目标的入口点可能只需要一个起始点(一个公共方法),但许多其他方法是复杂操作的一部分(许多私有帮助方法)。

使用私有方法,我们可以隐藏逻辑,这些逻辑不是也不应该从类本身之外的任何地方访问。

公共方法通常是实现该类的其他类将要使用的代码。 私有方法通常在类之外不那么有用,或者不(单独)服务于类要完成的目的。

假设你在你选择的IDE中,并且你实现了一个类A.A类只设计做一件事,比如文档生成。 当然,您将在A类中使用一些数学和字节操作方法来生成文档,但是尝试使用A类的人不需要这些其他方法,因为他们只需要一个文档。 因此,我们将这些方法设为私有,以便为我们class级的任何未来用户保持简单。

声明私有方法的目的是

  • 隐藏实施细节
  • 将该方法排除在列为公共API之外
  • 确保代码背后的逻辑不被外部使用/误用
  • 大多数情况下,方法的执行取决于之前运行的其他方法; 那么你也可以确保控制使用方法的正确顺序

除非您打算在类的上下文之外安全地使用您的方法,否则请使用private作为您的方法。

将function设为私有可以在以下情况下获得优势:

  1. 使私有函数为JVM编译器提供了内联函数的选项,从而提高了应用程序性能
  2. 如果该类是可inheritance的并且您从子类扩展它,那么如果您想要隐藏子类中的函数,那么您可以执行此操作(您可以扩展StringTokenizer)。
  3. 如果必须在多个函数中使用一段代码,则可以使用私有实用程序方法移动该代码

在公共类中使用私有方法的一个优点和好理由是安全性和错误预防。 声明为private的方法只能由它们所属的类访问。 这意味着您的私有方法不会被意外地从程序中的其他地方调用,从而减少错误和其他复杂性。 如果您将方法声明为公共方法,则可以通过整个问题访问该方法,并可能导致并发症。

您可能有许多方法可以处理您不希望程序的任何其他部分能够干扰的某个数据。 通过私有方法和/或变量使用数据封装有助于防止这种情况,并使代码更易于跟踪和记录。

Interesting Posts