複雑なメソッドの機能の一部を、コードの可読性の点でのみいくつかの小さなメソッドに分割することをお勧めします(ただし、メソッドの呼び出しにある程度のパフォーマンスを支払う可能性があります)。それとも、これはある種の「悪いスタイル」ですか?
4 に答える
非常に基本的なルールは、メソッドは1つのことだけを実行する必要があるということです。それが多くの異なることをしていることを検出した場合、あなたは明確なリファクタリングの機会を持っています。
メソッドに単一の責任があるが、とにかくサイズが長すぎる場合は、「ヘルパー」機能を分離されたメソッドに抽出してみてください。分離されたクラスにプロモートできるコードを検出することもできます。
TDD開発は、この種の問題を回避するための優れた方法論です。これは、関心の分離を明確にし、テスト容易性のためだけに単一のメソッドで大量のコードを回避するのに役立つためです。簡潔なメソッドを記述しないと、適切にテストするのが難しくなります。
コードの再利用(DRYの原則)を検討している場合は、リファクタリングを検討する必要があります。メソッドの内容を機能に基づいて別の小さなモジュールに分割し、再利用できるようにします。例:顧客登録の詳細を保存して、顧客の新しい注文を作成する方法がある場合。おそらく、、、などCheckUserExist
の多くのメソッドを確認できます。必要に応じて、コードの他の領域でこの機能を再利用できるはずです。モジュール式に分割すると、コードも読みやすくなります。SaveUser
SaveOrder
Unclebob(Robert C. Martin)は、メソッドは4〜5行のコードを超えてはならないと考えています。これに関する彼のモットーは「あなたが落ちるまで抽出する」です。個人的には、これは非常に良い習慣だと思います。
Visual Studioでは、CTRL + R、Mを押してメソッドを抽出できます。
クラウディオの答えに加えて、検出された場合、コードをリファクタリングして分割する必要があることを意味するいくつかの匂いがあります。
1-非DRYコード:いくつかの行を複数の場所にコピー/貼り付けしていることに気付いた場合、これは悪臭であり、中央に配置し、必要な数から呼び出す必要があります。
2-数百行のメソッド:適切なメソッドはコードの50行を超えてはならず、おそらくこの数より多いか少ないかですが、この346行のメソッドは適切ではありませんのでご安心ください。
3-パラメータが多すぎます:メソッド内のパラメータのリストが長いと、読みやすさとコード品質が低下します。
4-コードの侵入:別のクラスからブロックされた多くのメソッドを使用しているメソッドは、このクラス内に存在する必要があります。
お役に立てば幸いです。