在哪里放内部课程?

Jas*_*ack 40 java coding-style inner-classes

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

这就是为什么我想知道你们在哪里宣布你们的内心课程.

我遵循以下方法排序方案,因为它很常见:

public void foo() {
    usedByFoo();
}

private void usedByFoo() {
}

public void bar() {
}
Run Code Online (Sandbox Code Playgroud)

我从上到下订购它们,每个方法都接近使用它的位置.

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

class Outer {
    private Inner inner;

    private class Inner {};

    public Outer() {
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

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

根据我的订购方法,我应该遵循哪种风格?最常见的方法是什么?

Ami*_*hum 54

我会在文件的底部声明内部类 - 通常你对它们的实现不感兴趣,只是想要获得你的主类'方法,所以它们不应该妨碍.

  • 我要补充一点,如果有这么多内部类会让人感到困惑,那么就该把它们中的一部分分解为顶级类了. (9认同)

Mic*_*rry 9

我喜欢的风格是把它们放在最有意义的地方.通常这是在底部所以他们已经走了,但有时我发现将它们放在某组方法之前更有意义(如果这些是使用内部类的方法.)

如果这个类因为大量的方法和内部类而变得过于笨拙,那么它可能是一个糟糕的设计选择(凝聚力太低了.)我有时会让课程偶然得到这种方式而且以后处理它们太可怕了 - 这些如果我能看到一个这样的日子,我通常会重构它,甚至可能在它自己的包中.如果你达到了你有这么多内部课程的地步,你不知道如何处理它们,我会采用这种方法.甚至还有一些建议不要因为这个原因而反对使用内部类(虽然我不同意 - 如果使用得当它们是宝贵的资源,你只需要注意它们不会失控.