我见过一些开发人员将实例变量声明放在类的末尾,尽管我大多看到它们放在顶部。我能想到这样做的唯一原因是风格偏好,或者也许它以某种方式使它们更容易在 IDE 中使用。选择这种风格有更正当的理由吗?
5 回答
因为“编程到‘接口’,而不是‘实现’。” (Gang of Four 1995:18)(http://en.wikipedia.org/wiki/Design_Patterns#Introduction.2C_Chapter_1),有些人喜欢在类的底部声明实例变量。理论是类的用户更感兴趣的是他们可以用类(方法)做什么,而不是如何完成某事(变量)。将方法放在类的顶部会在用户查看代码时首先将它们公开给用户。
以一种或另一种方式做这件事没有特别“好的”理由。唯一真正重要的是同一个项目中的每个人都以同样的方式做事。
但是,根据我的经验,将它们放在顶部更为常见,并且是Java 样式指南推荐的做法,所以我会这样做。
您可以使用Jalopy等自动源代码格式化程序或 Eclipse 附带的程序来强制执行您选择的约定。
这主要是(如果不是完全)个人喜好。我喜欢他们在顶部,但我真的无法给出更好的理由,那就是这是我习惯的方式。
大多数实例变量是private
,所以我倾向于将它们放在底部,因为我声明成员的顺序是降低可见性。如果我按照增加可见度的顺序声明它们,它们将位于顶部,这也是合理的。
我不喜欢有私有字段,然后是公共字段,然后是私有方法。如果我正在开发一个客户端类,我希望将所有公共部分放在一起(因为这就是我感兴趣的全部。)
我一直认为如果你有一个私有类级别的变量,那么你要么硬编码了配置,要么以一种或另一种方式跟踪状态。如果您正在跟踪状态,那么 1) 从打开文件的那一刻起,对于要在文件中编写代码的每个人来说,这应该是显而易见的,并且 2) 跟踪大量状态是一种巨大的代码气味,如果我的开发人员正在这样做,那么我希望它是显而易见的。所以把它放在顶部,恕我直言,让糟糕的代码更加明显,并作为对未来编辑该类的人的警告。
Definitely separate your public/protected vs private fields and members though, because people interested in one, likely aren't interested in the other.