实例变量声明的位置

11

我看过有些开发人员把实例变量的声明放到类的末尾,尽管我大多数情况下看到它们被放置在顶部。我能想到的唯一原因是风格偏好或者这样做在IDE中更易于使用。选择这种样式还有更合法的理由吗?

5个回答

17

由于“针对接口编程,而不是针对实现编程”(四人帮, 1995:18)(http://en.wikipedia.org/wiki/Design_Patterns#Introduction.2C_Chapter_1)的原因,一些人更喜欢在类底部声明实例变量。这个理论认为一个类的使用者更关心他们可以用这个类做什么(方法),而不是怎样实现(变量)。把方法放在类的顶部会让用户在查看代码时首先看到方法。


2
一个类的用户不应该首先查看源代码(使用方法应该有文档记录并且可以在不查看源代码的情况下访问)。唯一需要查看源代码的原因是为了理解内部工作原理,这就是为什么我不建议将私有字段放在底部的原因。 - PlsWork

15

没有特别“好”的理由来选择一种方式或另一种方式。真正重要的是,同一项目中的所有人都以相同的方式进行。

然而,在我的经验中,将它们放在顶部更为普遍,并且这是Java风格指南推荐的做法,所以我会选择这种方式。

你可以使用自动源代码格式化程序(例如Jalopy或Eclipse自带的)来强制执行你选择的惯例。


2

大多数情况下(如果不是全部),这取决于个人偏好。我喜欢将它们放在顶部,但我无法给出更好的理由,只能说这是我习惯的方式。


1
我一直认为,如果你有一个私有类级变量,那么你要么硬编码了配置,要么以某种方式跟踪状态。如果你正在跟踪状态,则应该让所有打开文件编写代码的人从文件打开时就明显地知道这一点;并且跟踪大量状态是一个巨大的代码坏味道,如果我的开发人员正在这样做,那么我希望它能变得明显。因此,在顶部放置它会使糟糕的代码更加明显,并为编辑类的未来人员提供警告。

但是请务必将公共/受保护的字段和成员与私有字段和成员分开,因为对其中一个感兴趣的人可能对另一个不感兴趣。


1

大多数实例变量都是private的,因此我倾向于将它们放在底部,因为我按照可见性递减的顺序声明成员。如果我按照可见性递增的顺序声明它们,它们将位于顶部,这也是合理的。

我不喜欢的是私有字段后面跟着公共字段,然后是私有方法。如果我正在开发客户端类,我希望所有公共部分在一起(因为那是我感兴趣的部分)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接