[[FrontPage]] * リファクタリング [#u6d8c2b4] ** パターン指向リファクタリング入門 [#j4e39aa6] ここでは、[[パターン指向リファクタリング入門>図書/パターン指向リファクタリング入門]]に出てくる''臭いのパターン'' にそってそのポイントを記述する。 ここでは、[[パターン指向リファクタリング入門>図書/パターン指向リファクタリング入門]]に出てくる''臭いのパターン''にそってそのポイントを記述する。 *** コンストラクタが多すぎる [#h4f3b3f9] -- [[Creation Methodによるコンストラクタの置き換え>パターン指向リファクタリング入門/Creation Methodによるコンストラクタの置き換え]] *** 長すぎるメソッド [#hd6d4935] *** 複雑な条件記述 [#o159e382] *** 基本データ型への執着 [#rd69fd41] *** 見苦しい露出 [#a7ccaa02] -- [[Factoryによるクラス群の隠蔽>パターン指向リファクタリング入門/Factoryによるクラス群の隠蔽]] *** 解決策の散在 [#o91be633] *** クラスインタフェースの不一致 [#be5cf1fd] *** 怠け者クラス [#y8a3211c] *** 巨大なクラス [#qea83b4d] *** スイッチ文 [#ba4f7740] *** 組み合わせの爆発的増加 [#k01ec65a] *** 風変わりな解決策 [#o9bea33e] ** リファクタリング [#f2f284ce] マーチン・ファウラーの[[リファクタリング>図書/リファクタリング]] はコードの不吉な臭いによって対処すべきリファクタリングについて記述している。 *** [[クラスのインタフェース不一致>リファクタリング/クラスのインタフェース不一致]] [#b7fabdb7] -- [[メソッド名の変更>リファクタリング/メソッド名の変更]] -- [[メソッドの移動>リファクタリング/メソッドの移動]] *** [[コメント>リファクタリング/コメント]] [#v235e38f] -- [[メソッドの抽出>リファクタリング/メソッドの抽出]] -- [[表明の導入>リファクタリング/表明の導入]] *** [[データクラス>リファクタリング/データクラス]] [#ffad4037] -- [[メソッドの移動>リファクタリング/メソッドの移動]] -- [[フィールドのカプセル化>リファクタリング/フィールドのカプセル化]] -- [[コレクションのカプセル化>リファクタリング/コレクションのカプセル化]] *** [[データの群れ>リファクタリング/データの群れ]] [#o712f752] -- [[クラスの抽出>リファクタリング/クラスの抽出]] -- [[引数オブジェクトの導入>リファクタリング/引数オブジェクトの導入]] -- [[オブジェクトそのももの受け渡し>リファクタリング/オブジェクトそのももの受け渡し]] *** [[変更の発散>リファクタリング/変更の発散]] [#qd0f78a5] -- [[クラスの抽出>リファクタリング/クラスの抽出]] *** [[重複したコード>リファクタリング/重複したコード]] [#acdb3903] -- [[メソッドの抽出>リファクタリング/メソッドの抽出]] -- [[クラスの抽出>リファクタリング/クラスの抽出]] -- [[メソッドの引き上げ>リファクタリング/メソッドの引き上げ]] -- [[Template Methodの形成>リファクタリング/Template Methodの形成]] *** [[属性、操作の横恋慕>リファクタリング/属性、操作の横恋慕]] [#ba00e627] -- [[メソッドの移動>リファクタリング/メソッドの移動]] -- [[フィールドの移動>リファクタリング/フィールドの移動]] -- [[メソッドの抽出>リファクタリング/メソッドの抽出]] *** [[不適切な関係>リファクタリング/不適切な関係]] [#ic80123d] -- [[メソッドの移動>リファクタリング/メソッドの移動]] -- [[フィールドの移動>リファクタリング/フィールドの移動]] -- [[双方向関連の単方向への変更>リファクタリング/双方向関連の単方向への変更]] -- [[委譲による継承の置き換え>リファクタリング/委譲による継承の置き換え]] -- [[委譲の隠蔽>リファクタリング/委譲の隠蔽]] *** [[未熟なクラスライブラリ>リファクタリング/未熟なクラスライブラリ]] [#ecacf2ae] -- [[外部メソッドの導入>リファクタリング/外部メソッドの導入]] -- [[局所的拡張の導入>リファクタリング/局所的拡張の導入]] *** [[巨大なクラス>リファクタリング/巨大なクラス]] [#z9352ea2] -- [[クラスの抽出>リファクタリング/クラスの抽出]] -- [[サブクラスの抽出>リファクタリング/サブクラスの抽出]] -- [[インタフェースの抽出>リファクタリング/インタフェースの抽出]] -- [[オブジェクトによるデータ値の置き換え>リファクタリング/オブジェクトによるデータ値の置き換え]] *** [[怠け者クラス>リファクタリング/怠け者クラス]] [#mbd52029] -- [[クラスのインライン化>リファクタリング/クラスのインライン化]] -- [[階層の平坦化>リファクタリング/階層の平坦化]] *** [[長すぎるメソッド>リファクタリング/長すぎるメソッド]] [#g06e7b30] -- [[メソッドの抽出>リファクタリング/メソッドの抽出]] -- [[問い合わせによる一時変数の置き換え>リファクタリング/問い合わせによる一時変数の置き換え]] -- [[メソッドオブジェクトによるメソッドの置き換え>リファクタリング/メソッドオブジェクトによるメソッドの置き換え]] -- [[条件記述の分解>リファクタリング/条件記述の分解]]