在哪里放内部课程?

有些人可能会认为,这是所有时代最不重要的问题的候选人。 然而,代码风格对我来说是一个非常重要的话题,我想确保我以可读的方式编写代码 – 对于我和大多数开发人员。

这就是为什么我想知道你们在哪里宣布你的内部类。

我遵循以下方法sortingscheme,因为它是相当普遍的:

public void foo() { usedByFoo(); } private void usedByFoo() { } public void bar() { } 

我从上到下排列它们,每一种方法都与使用的地方相近。

现在我可以用内部类来做同样的事情,像这样:

 class Outer { private Inner inner; private class Inner {}; public Outer() { } ... } 

我认为这是我遵循的最一致的风格,但我也经常看到人们在文件的顶部或底部声明所有的内部类。

鉴于我的订购方法,我应该遵循哪种风格? 什么是最常见的方式来做到这一点?

我会在文件的底部声明内部类 – 通常你对它们的实现不感兴趣,只想到你的主类的方法,所以它们不应该阻碍。

我喜欢的风格是把它们放在任何看起来最有意义的地方。 通常这是在底部,所以他们的方式,但有时我觉得把它们放在一个特定的方法组(如果这些是使用内部类的方法)更有意义。

如果这个类变得太笨重了,那么这可能是一个糟糕的deviseselect(内聚力太低了)。有时候我们会让类错误地被这样的方式处理,而且后来他们处理起来很糟糕 – 这些如果我能看到一个这样的日子,我通常会重构它,甚至可能是它自己的包。 如果你有这么多的内部课程,你不知道该怎么办,我会采取这种方法。 甚至有人build议不要使用内部类(因为这个原因)(尽pipe我不同意 – 使用得当的时候,它们是一个宝贵的资源,你只需要注意它们不会失控。