web-dev-qa-db-ja.com

内部クラスをどこに置くか?

これは、これまでで最も重要性の低い問題の候補であると主張する人もいるかもしれません。それでも、コードスタイルは私にとって非常に重要なトピックであり、私と大多数の開発者にとって、読みやすい方法でコードを記述できるようにしたいと考えています。

だから私はあなたたちがあなたの内部クラスをどこで宣言しているのか疑問に思っています。

非常に一般的であるため、次のメソッド順序付けスキームに従います。

public void foo() {
    usedByFoo();
}

private void usedByFoo() {
}

public void bar() {
}

私はそれらを上から下に、それが使用される場所にできるだけ近いすべての方法で注文します。

これで、次のように、内部クラスでも同じことができます。

class Outer {
    private Inner inner;

    private class Inner {};

    public Outer() {
    }

    ...
}

これが私にとって最も一貫したスタイルだと思いますが、ファイルの上部または下部ですべての内部クラスを宣言する人もよく見かけます。

メソッドの注文方法を考えると、どのスタイルに従う必要がありますか?これを行う最も一般的な方法は何ですか?

41
Jason Noack

ファイルの最後で内部クラスを宣言します。通常、それらの実装には興味がなく、メインクラスのメソッドにアクセスしたいだけなので、邪魔にならないようにする必要があります。

56
Amir Rachum

私の好みのスタイルは、最も意味があると思われる場所に配置することです。通常、これは一番下にあるので邪魔になりませんが、特定のメソッドグループの前に置く方が理にかなっている場合があります(これらが内部クラスを使用するメソッドの場合)。

ただし、クラスがメソッドや内部クラスの負荷で扱いにくくなる場合は、おそらく設計上の選択としては不適切です(凝集度が低すぎます)。クラスが誤ってこのようになってしまうことがあり、後で処理するのは恐ろしいことです。私がそのように進んでいるのを見ることができれば、私は一般的にそれをリファクタリングします、おそらくそれ自身のパッケージにさえ。内部クラスが多すぎてどうしたらよいかわからなくなった場合は、このアプローチを採用します。この理由で内部クラスを使用しないようにアドバイスする人もいます(私は同意しませんが、適切に使用すると貴重なリソースですが、手に負えないように注意する必要があります。

9
Michael Berry