在哪里放置内部类?[已关闭]

2022-09-01 01:30:33

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

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

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

public void foo() {
    usedByFoo();
}

private void usedByFoo() {
}

public void bar() {
}

我从上到下订购它们,每种方法都尽可能接近使用的地方。

现在我可以对内部类做同样的事情,如下所示:

class Outer {
    private Inner inner;

    private class Inner {};

    public Outer() {
    }

    ...
}

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

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


答案 1

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


答案 2

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

但是,如果类在大量方法和内部类中变得过于笨拙,则可能是一个糟糕的设计选择(内聚力太低)。我有时会让类意外地变成这样,它们很可怕 - 这些天如果我可以看到一个这样的方向,我通常会重构它,甚至可能是它自己的包。如果你到了你有这么多内部类的地步,你不知道该怎么处理它们,我会采取这种方法。出于这个原因,甚至有一些人建议不要使用内部类(尽管我不同意 - 如果使用得当,它们是一种宝贵的资源,你只需要注意它们不会失控。