【问题标题】:Where to put inner classes? [closed]在哪里放置内部类? [关闭]
【发布时间】:2011-06-11 10:27:30
【问题描述】:

有些人可能会争辩说,这是有史以来最不重要的问题。然而,代码风格对我来说是一个非常重要的话题,我想确保我以一种可读的方式编写代码——对我和大多数开发人员来说。

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

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

public void foo() {
    usedByFoo();
}

private void usedByFoo() {
}

public void bar() {
}

我从上到下对它们进行排序,每一种方法都尽可能靠近它的使用位置。

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

class Outer {
    private Inner inner;

    private class Inner {};

    public Outer() {
    }

    ...
}

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

考虑到我的订购方式,我应该遵循哪种风格?最常见的方法是什么?

【问题讨论】:

  • 我觉得代码风格太主观了……也许我错了。只是记录下地狱般的事情。
  • 也许这更属于programmers.stackexchange.com
  • @Amir 是的,编码风格的问题在那里蓬勃发展。

标签: java coding-style inner-classes


【解决方案1】:

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

【讨论】:

  • 我要补充一点,如果内部类太多以至于令人困惑,那么是时候将其中的一些分解到*类中了。
  • 相当多的赞成票,没有其他答案,猜猜那是要走的路,谢谢!
【解决方案2】:

我喜欢的风格是将它们放在看起来最有意义的地方。通常这是在底部,所以它们不碍事,但有时我发现将它们放在一组方法之前更有意义(如果这些方法是使用内部类的方法。)

如果类因大量方法和内部类而变得过于笨重,这可能是一个糟糕的设计选择(内聚度太低。)我有时会让类意外地变成这种方式,而且处理起来很糟糕稍后-这些天,如果我能看到一个这样的方式,我通常会对其进行重构,甚至可能将其重构到自己的包中。如果你有这么多内部类,你不知道如何处理它们,我会采用这种方法。出于这个原因,甚至有人建议不要使用内部类(尽管我不同意 - 如果使用得当,它们是一种宝贵的资源,你只需要注意它们不会失控。

【讨论】: