私はコースワークとして提出するパッケージの一部である大規模なクラス(40程度のメソッド)を持っています。現在、メソッドはユーティリティpublic / privateなどに関してかなりごちゃごちゃしていて、私はそれらを賢明な方法で注文したいと思っています。これを行う標準的な方法はありますか?たとえば、通常、フィールドはメソッドの前にリストされ、コンストラクタは他のメソッドの前にリストされ、ゲッター/セッターは最後に続きます。残りのメソッドはどうですか?
私はコースワークとして提出するパッケージの一部である大規模なクラス(40程度のメソッド)を持っています。現在、メソッドはユーティリティpublic / privateなどに関してかなりごちゃごちゃしていて、私はそれらを賢明な方法で注文したいと思っています。これを行う標準的な方法はありますか?たとえば、通常、フィールドはメソッドの前にリストされ、コンストラクタは他のメソッドの前にリストされ、ゲッター/セッターは最後に続きます。残りのメソッドはどうですか?
回答:
一部の規則では、すべてのパブリックメソッドが最初にリストされ、次にすべてのプライベートメソッドがリストされます。つまり、インターフェースが存在しない場合でも、APIを実装から簡単に分離できます。
別のアイデアは、関連するメソッドを一緒にグループ化することです。これにより、既存の大きなクラスをいくつかのより小さくターゲットを絞ったクラスに分割できる継ぎ目を見つけやすくなります。
クラス(静的)変数:最初にパブリッククラス変数、次にプロテクト、次にプライベート。
インスタンス変数:最初にパブリック、次に保護、次にプライベート。
コンストラクタ
メソッド:これらのメソッドは、スコープやアクセシビリティではなく、機能ごとにグループ化する必要があります。たとえば、プライベートクラスメソッドは、2つのパブリックインスタンスメソッドの間に置くことができます。目標は、コードの読み取りと理解を容易にすることです。
ソース:http://www.oracle.com/technetwork/java/codeconventions-141855.html
«コード規約»へのより正確なリンク:«クラスとインターフェースの宣言»
広く受け入れられている標準があるかどうかはわかりませんが、私自身の好みはそうです。
toString
、equals
およびhashcode
次のnew Thing()
は、インスタンス化される新しいものをもたらすだけです。これは、などなど、ファイルが書き込まれて、開かれているデータベース接続になってはならない
1つのクラスで40のメソッドは少し多くなります。
一部の機能を他の(適切な名前の)クラスに移動することは理にかなっていますか。そうすれば、理解するのがはるかに簡単になります。
数が少ない場合は、自然な読み順でリストする方がはるかに簡単です。頻繁パラダイムは、いずれかのリストの物事にある前または後にあなたがそれらを必要とするためには、あなたがそれらを必要とします。
これは通常main()
、上または下になります。
onPause()
、他の場所には行けないことがたくさんありますonResume()
。また、すべてのOnClickListener
フィールドがフィールドですが、フィールドのように見えたり、動作したりしないので、それらを個別にリストしてください。
また、Eclipseは、何らかの理由でそれらを混同した場合に、クラスメンバーを並べ替える可能性を提供します。
クラスファイルを開き、メインメニューの[ソース]に移動して、[メンバーの並べ替え]を選択します。
ここから抜粋:Eclipseでのソート方法