クラスで一度だけ呼び出されるコードのプライベートメソッドを抽出する価値がありますか、それとも親メソッドにコードを残して(多分)それが何をするのかを示すコメントを付けておく価値がありますか?
6 に答える
コードの意図が明確になれば、メソッドを抽出する価値は常にあります。
これは、非常に長いメソッドに特に当てはまります。コメントは問題ありませんが、説明するプロセスがどこで終了し、次のプロセスがどこから始まるかを(少なくとも非常に堅実な方法で)描写していません。一般的な抽象化は、メソッドを抽出した後で初めて明らかになる場合があります。
自動化された単体テスト(必ずしもTDDである必要はありません)を使用している場合は、メソッドの小さなチャンクを単体テストする方がはるかに簡単です。ただし、使用するテストフレームワークによっては、メソッドを公開する必要がある場合があります。 。
重要なのは、特に説明的な名前がある場合は、小さなメソッドで間違いを犯すことはできないということです。
これを行うことには大きな利点があります。それはすべて、情報を隠し、意図を非常に明確にすることです。
コードへのリファクタリングでは、このコンポジションメソッドを呼び出し、大きなメソッドを多くの小さなメソッドに分割します。これは2つのことを行います。
まず、親メソッドで作業するときに心配する必要のある情報の量を減らします。
次に、メソッドの名前は、コードを読みやすくする意図を示す必要があります。
はい、そうです。
- 上で述べたように:それは一般的にコードの意図を明確にします。
- 現在一度だけ使用しても、将来のコードの再利用が容易になります。
追加のポイント:単純なヘルパーメソッドの場合、静的(インスタンスの状態に依存したり、インスタンスの状態を変更したりしないように)にし、さらに簡単に再利用できるように公開することができます。
私にとっては、コードの大きさと、親メソッドの動作との関連性によって異なります。大量のコード (たとえば、5 ~ 10 行以上のコード、または親メソッドの総コード量の 50% 以上) の場合、コード構造と読みやすさのために、プライベート メソッドに抽出します。それ以外の場合は、説明的なコメントを付けて親メソッドに残します。
コード内に非常に小さなメソッドが多すぎると、保守性と可読性が低下する可能性があると思います。バランスよく頑張ります。しかし、私が疑うときはいつでも。プライベートメソッドとして抽出します。
他の場所で使用するときに公開するAPIとメソッド/プロパティの設計に基づいて、プライベートにリファクタリングする必要があります。プライベート/パブリックにするかどうかを決定するための使用法を考慮すべきではありません。
ばかげた見積もりですが、プライベート メソッドの大部分は、平均的なクラスの数か所でしか呼び出されないと思います。ただし、前述のように、すべての機能を論理ブロックに分割すると、コードがはるかに読みやすくなり、テスト/保守が容易になります。リファクタリングは良い習慣です