TOP
リファクタリングとは何ですか?
説明
リファクタリング - 外部の動作を変えることなく、理解しやすく、より速く変更できるようにするために、ソフトウェア (ソフトウェア) の内部構造に加えられる変更。また、これは、ソフトウェアの外部の動作を変更せずに、一連のリファクタリングを適用してソフトウェアを再構築することです。
リファクタリングの利点:
- リファクタリングによりソフトウェア設計が改善されます。 時間の経過とともにコードに多くの追加変更が加えられ、ソフトウェアは時間の経過とともにその構造を失います。構造の損失は累積的な影響を及ぼします。コード内で設計を確認するのが難しくなればなるほど、設計を維持するのが難しくなり、崩れるのも早くなります。また、このような変更によりコードの冗長性と重複が生じ、システムの理解と変更がさらに困難になります。
- リファクタリングにより、ソフトウェア コードがより理解しやすくなります。
リファクタリングを行う必要がある場合:
- 新しい機能が追加されたとき
- エラーが修正(修正)されたとき。
- コードレビュー中
コード内に異臭がする (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 断片 – すべての分割フェック式式に同じフラグメントが存在します。コードのこの部分を条件の外側に移動する必要があります。
- Remove Control Flag (制御フラグは削除されました) – 制御フラグとして一連の論理式として機能する変数がありますが、代わりに BREAK または RETURN を使用してください。
- Replace Conditional with Polymorphism (可以電影子ををなれフィズズムにします) – オブジェクトの型に依存する条件演算子がある場合に操作が実行されます。条件演算子は各サブクラスのオーバーロードされたメソッドに移動する必要があります。ソース コードは抽象化されます。