为什么将私有字段和方法放在最顶层?

时间:2009-04-22 17:12:06

标签: class-design

我在许多语言的许多地方看到了这个事实上的标准,但我从来没有理解它 - 为什么把你的私人领域和方法置于类声明的顶端?隐喻地看起来私人事物应该位于底部(隐藏)并且所有公共应该位于顶部,因此当您从上到下阅读课程时,首先看到公共界面然后是内部工作。

这背后的原因是什么?

编辑:只是为了澄清,我并不是指在课堂上声明所有成员的做法,而是在公开之前将私人成员/方法放在课堂声明的顶部。

11 个答案:

答案 0 :(得分:20)

它源于你必须在使用它们之前声明所有东西 - 包括函数和变量 - 的日子。

内部(私有)变量和函数位于文件的顶部,外部(公共)函数位于文件的底部。这意味着公共职能可以引用内部职能。如果你有递归,你必须通过声明它的轮廓来转发引用该函数。

当语言允许代码跨越多个文件时,您必须将公共函数和变量声明放入头文件中,以便它们可以包含在项目中的其他文件中 - 或者实际上是其他项目中。

答案 1 :(得分:11)

它可能来自C时代,当所有变量必须在顶部定义时,作为初始化的一部分。此外,默认访问说明符为private,因此它可以在您的类定义中为您节省多余的private:

答案 2 :(得分:8)

就个人而言,当我试图阅读其他人的代码并理解它时,我喜欢拥有私有字段提供的上下文。它让我快速了解他们正在做的事情的类型以及我可以期待看到的事物。如果操作正确,它可以提供一个很好的预览,几乎就像其他代码的目录一样。

答案 3 :(得分:4)

我同意它可能来自C,但它也具有实用功能。

在所有你需要学习的东西中,需要学习如何在学习如何繁殖之前加入。

对于代码,您的公共函数通常会引用内部私有函数,而您的私有函数不太可能引用公共函数(尽管肯定存在重叠。)因此,了解您拥有的私有变量以及它们是什么用于在尝试理解公共方法对这些变量执行的操作时将非常有用。

以这种方式,在阅读调用它们的公共方法之前,了解私有方法的作用也很有用。

总的来说,我相信这是一种来自C语言和早期语言的风格,但是因为它在功能上更有用,我认为切换样式没有任何好处。

而且,一如既往,打破一致性绝不是一个好主意,除非有令人难以置信的令人信服的理由。

答案 4 :(得分:3)

有两个原因。

如果它们一起位于顶部,它们很容易找到,并且在创建新事物时很容易检查,看看哪些命名约定在起作用,哪些名称是不可用的。

在C语言和javascript中,代码中的所有引用都必须在引用它们的位置之前声明和/或定义,因为引用的所有内容必须已知。 (是的,我知道,javascript只能排序。)

答案 5 :(得分:3)

在OOP中 - 有两件事 - 数据和行为

私有成员代表数据,公共方法代表行为。

您只能根据所代表的数据来考虑行为 所以 - 这就是为什么我想把我的数据元素保持在最顶层。

答案 6 :(得分:2)

关于 fields ,将所有字段设为私有(封装和所有这些)是很常见的。它们很小。因为它们很小,所以将它们放在一起是很好的,也是可能的,并且类的顶部是一个很好的,稳定的放置它们的地方。我不知道这是否是它的历史理由 - 我认为C语言的根源可能更好地解释了 - 但这可能是我们将它们保留在那里的原因。

就我个人而言,我倾向于将私人方法放在底部,原因就是你的建议。

答案 7 :(得分:1)

我认为事实上的标准首先是公共方法!至少这是我编写课程的方式。它帮助我为我的方法选择数据结构。

答案 8 :(得分:0)

我猜这是习惯。你必须先声明函数和变量才能使用它们,这样才能保持一致。

另一方面,这是你不想让其他人阅读的东西,所以它属于底层。

答案 9 :(得分:0)

因为像@ChrisF所说的那样的语言>>如解释性语言,Python是一个突出的语言

答案 10 :(得分:-2)

他们在那里并不是一个秘密。你害怕有人会了解内部运作吗?如果他们有来源,他们可以了解他们需要了解的关于你班级的所有信息。

将它们与其他人一起使用可以更容易地开发该课程。所有类变量都在一个地方,你的方法也是如此。