5

今では、私の平均的なクラスには、約500行のコードと約50のメソッドが含まれています。IDEはEclipseであり、「アクションの保存」をオンにして、メソッドがアルファベット順に、最初にパブリックメソッド、次にプライベートメソッドの順にソートされるようにしました。コード内の特定のメソッドを見つけるために、「クイックアウトライン」を使用します。必要に応じて、「Open Call Hierarchy」には、メソッドが1つずつ呼び出されたときの一連のメソッドが表示されます。

このアプローチには、次の利点があります。

  • 保存後、Eclipseによって自動的に適切な場所に配置されるため、コード内のどこに配置するかを考えずに新しいメソッドの入力を開始できます。
  • 私は常にコードの上部にパブリックメソッドを見つけます(クラス全体でそれらを検索する必要はありません)

ただし、いくつかの欠点があります。

大きなメソッドを小さなメソッドにリファクタリングするとき、新しいプライベートメソッドがコードのさまざまな部分に配置されることにあまり満足していません。したがって、コードの概念に従うのは少し難しいです。それを避けるために、私はそれらをそれぞれの近くに保つためにいくつかの奇妙な方法で名前を付けます。たとえば、showFirstPage()、showSecondPage()の代わりにshowPageFirst()、showPageSecond()。

より良いアプローチがあるかもしれませんか?

4

4 に答える 4

4

オーディエンスのためにコードを整理します。たとえば、図書館のクラスには次のような対象者がいる可能性があります。

  1. パブリックメソッドがどのように機能するかについての詳細を知りたいAPIクライアント。
  2. 小さな変更を加えるための適切な方法を見つけたいと考えているメンテナ。
  3. 重要なリファクタリングを実行したり、機能を追加したりする、より真面目なメンテナ。

ソースコードを熟読しているクライアントのために、コアコンセプトを紹介したいと思います。まず、重要な用語と使用例の用語集を含むクラスドキュメントコメントがあります。次に、ある用語に関連するコード、別の用語に関連するコード、3番目の用語に関連するコードがあります。

メンテナにとっては、一緒に変更しなければならない可能性のあるメソッドのペアは近くにある必要があります。パブリックメソッドとそのプライベートヘルパー、およびそれに関連する定数は、一緒に表示される必要があります。

これらのユーザーグループは両方とも、クラスメンバーを個別に文書化された論理セクションにグループ化することで支援されます。

たとえば、コレクションクラスには、個別のクラスに簡単に分割できないが、個別のセクションに分割できる、ほとんど直交する懸念事項がいくつかある場合があります。

  1. ミューテーター
  2. アクセサー
  3. 反復
  4. シリアル化とtoString
  5. 平等、比較可能性、ハッシュ
于 2012-08-23T08:18:40.683 に答える
3

ええと、IDEで見つけやすいようにメソッドに名前を付けるのは、本当に良くありません。彼らの名前は彼らがしていることを反映しているべきであり、それ以上のものではありません。

あなたの質問への答えとして、おそらく最善の方法は、クラスを複数のクラスに分割し、そのような各クラスに共通する何かを持つメソッドのグループを分離することです。たとえば、

public void largeMethodThatDoesSomething() {
 //do A
 //do B
 //do C
}

次に、次のようにリファクタリングしました。

public void largeMethodThatDoesSomething() {
 doA();
 doB();
 doC();
}

private void doA() {};
private void doB() {};
private void doC() {};

これらの4つのメトッドをすべて配置し、元のクラスでそのクラスのインスタンスを使用するSomethingDoerというクラスを作成できます。

于 2012-08-23T08:14:59.027 に答える
3

クラス内でメソッドを物理的に並べ替える必要はありません。メソッドが表示されない場合は、Ctrl-Oを使用してメソッド名を入力し始めると、すぐにそのメソッドにジャンプします。

自己記述型のメソッド名を使用すると、アルファベット順に保つために人為的に名前を付けるよりも、コードを保守しやすくなります。

ヒント:ショートカットキーを学ぶと、生産性が向上します

于 2012-08-23T08:15:55.240 に答える
1

あなたが説明した方法を整理することは、私がこれまでに見たJavaコードの99%よりも良いように聞こえます。ただし、その一方で、クラスが大きくなりすぎないようにし、メソッドが大きくならないようにしてください。

クラスは通常1000行未満、メソッドは150行未満である必要があります。

于 2012-08-23T08:09:37.913 に答える