TOP
リファクタリングとは何ですか?
説明
リファクタリング (Refactoring) – 外部の動作を変更せずに、理解しやすく、より迅速に変更できるようにするために、ソフトウェア (ソフトウェア) の内部構造に加えられる変更。また、これは、ソフトウェアの外部の動作を変更せずに、一連のリファクタリングを適用してソフトウェアを再構築することです。
リファクタリングの利点:
- リファクタリングによりソフトウェア設計が改善されます。 時間の経過とともにコードに多くの追加変更が加えられ、ソフトウェアは時間の経過とともにその構造を失います。 構造の損失は累積的な影響を及ぼします。コード内で設計を確認するのが難しくなればなるほど、設計を維持するのが難しくなり、崩れるのも早くなります。また、このような変更によりコードの冗長性や重複が生じ、システムの理解や変更がより困難になります。
- リファクタリングにより、ソフトウェア コードがより理解しやすくなります。
リファクタリングを行う必要がある場合:
- 新しい機能が追加されたとき。
- エラーが修正(修正)されたとき。
- コードレビュー中。
コード内に異臭がする (Smells Catalog) :
- コードの重複
- ロングメソッド
- ビッグクラス
- パラメーターの長いリスト
- 多様な変更
- ショット撮影
- うらやましい機能
- データのブロック
- エレメントタイプへの執着
- Switch 演算子
- 模倣の並列階層
- 怠惰なクラス
- 投機的(理論的)コミュニティ
- 一時フィールド
- メッセージスレッド
- エージェント
- 不適切な近接
- 異なるインターフェースを持つ代替クラス
- 不完全なライブラリ クラス
- データクラス
- コメント
可能なリファクタリング オプション
-
Moving Features Between Objects (オブジェクト間の完全なコード転送):
- Move Method (方法論は強調されていません) – メソッドが長すぎる場合、またはコメントに必要なコードが含まれている場合は、他のメソッドを分離します。
- Move Field (移動フィールド) – フィールドが、定義された場所とは異なるクラスによって頻繁に使用される場合に実行されます。
-
Organizing Data (データ構成):
- Encapsulate Field (フィールドカプセル) - OOP 1 の主な原則はカプセル化です。つまり、データが公開されると、オブジェクトはデータ所有者に知られずにその値を読み取ったり変更したりできます。そのため、このようなフィールドは閉じられ、アクセス方法。
- Encapsulate Collection (カプセル集め) - 教室にはオブジェクトのコレクションが存在することがよくありますが、このコレクションには配列、リスト、セット、またはベクトルを指定できます。これを行うと、ゲッター メソッドはコレクション オブジェクト自体を返す必要はありません。クライアントがコレクションを所有するクラスを知らなくても、コレクションの内容を変更できるため、メソッドによって返される値が読み取り専用になるように、要素を追加または削除するメソッドを作成する必要があります。は
-
Composing Methods (抽出と結合のコード):
- Extract Method (方法論は強調されていません) – コードの一部がグループ化できる場合、その部分はメソッドの目的を説明する名前に置き換えられます。そのため、コメントはメソッドの名前に置き換えられます。
- Inline Method (方法論) – メソッドのメソッドをそれを呼び出すコードに移動すると便利かもしれません。また、メソッド本体がメソッド名そのものである場合もあります。また、構造が良くないため、さまざまなメソッドが存在します。それらすべてを 1 つの一般的な方法にまとめるか、別の方法で分割する方がよい場合があります。
- Inline Temp (一時変数を挿入) - 単純な式が 1 回だけ割り当てられる一時的な置換。ありますありますありますありますあります
- Replace Temp with Query (一時変数) – これは、式の値を格納するために一時変数が使用される場合に使用されます。この場合、式をメソッドに置き換え、コード内のこの変数へのすべての参照を新しいメソッドに置き換えます。
- Split Temporary Variable (分割する一時変数) – 単一の一時変数を使用して複数の結果を異なる結果に割り当てる場合に適用されます (ループ内のループで使用される変数が結果の乗算に使用される変数ではない場合を除く)。その場合は、それぞれに個別の変数を作成します。割り当て。
-
Simplifying Conditional Expressions (条件は簡略化の形式で使用されます):
- Decompose Conditional (可以電影子の单用) – 一連のチェック条件 (if-then-else) は、条件がある場合に実行されます。 役割立って、方法論をよりよく理解するために、条件 (if)、then、else の一部を別のメソッドに置き換えます。対応するコード部分の目的を明確にします。
- Consolidate Conditional Expression (これらの式のアニメーション) - 条件が多数ある場合、条件チェックを実行しても同じ結果が得られます。すべてのチェックを 1 つの条件式またはメソッドと組み合わせる必要があります。
- Consolidate Duplicate Conditional Fragments (重複した条件フラグメントの統合) – すべての分割フェック式式に同じフラグメントが存在します。コードのこの部分を条件の外側に移動する必要があります。
- Remove Control Flag (制御フラグは削除されました) – 制御フラグとして一連の論理式として機能する変数があります。代わりに BREAK または RETURN を使用します。
- Replace Conditional with Polymorphism (可以電影子ををなれフィズズムにします) – オブジェクトの種類に依存する条件演算子がある場合、操作は実行されます。条件演算子は、各サブクラスのオーバーロードされたメソッドに移動する必要があります。ソース コードは抽象化されます。