たびたび、Eclipseのリファクタリング機能を利用しています。いくつかのテクニックは他のテクニックよりも明白であり、私が試したことのないテクニックもあります。
あなたにとって最も役立つリファクタリングとその理由は何ですか?
注:このプレゼンテーションは非常に便利だと思います。おそらく、サンプルドリブンなので理解しやすいからです。
" 全員向けのリファクタリング-Eclipseの自動リファクタリング機能を使用する方法と理由 "
編集:この記事も役立ちます(ありがとう、ジッター)
興味深い質問です。自分にとって何が効果的かはわかっていますが、他の人が何を使っているかを見るのは興味深いです。
最も一般的に使用されるリファクタリングコマンドを決定するために、より科学的なアプローチを取ることにしました。 Eclipseには sage Data Collector(UDC) 機能が組み込まれています。データは 公開 です。データを取得して、最も一般的に使用される編集コマンドを示す次のグラフを抽出しました(ナビゲーションコマンドなし)。
代替テキストhttp://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif
しかし、私はインポートのフォーマットと整理のための「アクションの保存」を強く信じています( それに関する私の記事 を読んでください)。コメントアクションも削除します。画像は次のようになります。 alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif
Rename-意味のある名前を付けることが自己文書化コードを書くための最良の方法だからです。 Shift+Alt+R
メソッドの抽出-メソッドが長くなりすぎる場合。 Shift+Alt+M
定数の抽出-マジックナンバーが悪いため。 Shift+Alt+T (リファクタリングメニュー、直接のショートカットはありません)。
Inline/introduce variable-メソッドから混乱を取り除くため。 Shift+Alt+I (列をなして)、 Shift+Alt+L (導入する)
私のお気に入り(使用順):
Alt-Shift-R
、またはCtrl-1
ファイル内の名前の変更を高速化するため)Ctrl-1
、Alt-Shift-L
)Alt-Shift-M
)Ctrl-1
)Alt-Shift-C
)私のお気に入り:
最も一般的なリファクタリングが述べられており、私はそれらに完全に同意します。
コードフォーマッター(Source)、Formatまたは CtrlShiftF)はIDE私は非常によく使用します。確かに、リファクタリングではありませんが、コーディングスタイルを維持しながらコードの可読性を向上させます。単に設定、Java、コードスタイル、Formatterそして、Eclipseにコードをどのように見せたいかを教えてください!
ゲッターとセッターの生成は、Java Bean。
Eclipseは、おそらくすべての一般的なIDEに対して最も少ないリファクタリングを備えています。 NetbeansまたはIntelliJ(Communityエディションは無料)を検討するかもしれません。逆に、Eclipseにはおそらく最高のデバッガーがあります。 ;)
コードを記述するときにリファクタリングを使用します(これにより、書き込みが約15%速くなります)。そのため、IntelliJは、私にとってはあまり役に立たないコードをリファクタリングできます。他のIDEもこれをサポートしているかもしれません(誰か知っていますか?).
印刷物(元々Eclipseで作成)からのファイルの再入力をテストしましたが、IntelliJ(Eclipseと比較して)でファイルを入力するときにキーが30%減り、マウスの動きが50%減りました。
私のお気に入りは:
1)名前の変更-メソッド名、変数名、クラス名、フィールドで機能します。名前のあるものなら何でもかまいません。
2)匿名クラスをネストに変換-デバッグを支援し、1か所でしか使用しないと考えていたロジック(コンパレータなど)を再利用できます。
3)メンバータイプをトップレベルに変換する-匿名クラスをネストされたクラスにした後、クラスが他の場所で役立つことがよくあります。このリファクタリングは完璧です。
赤い罫線部分でCTRL + 1、つまりクイックフィックス。
Extractメソッドが好きです(Alt+Shift+M)、および 3.6M1 であるため、continueステートメントを含む選択を処理するようになりました。
既存のコードのセマンティクスを保持するには、選択にループの最後のステートメントを含める必要があります。抽出されたメソッドでは、次の値を返すようにcontinueステートメントが変更されます。
抽出されたメソッドで複数の戻り値を必要とする選択について、Eclipseはエラーメッセージに競合する変数をリストします。
最もよく使用するのは、名前の変更、メソッドの抽出、メソッドシグネチャの変更です。
この研究を読む価値もあります: APIはどのように進化しますか?リファクタリングのストーリー。 D. DigおよびR. Johnson。
著者は、変更の80%がリファクタリングであることに気付き、分類しました。以下に要約を示します。
フレームワークとライブラリはAPIを変更します。アプリケーションを新しいAPIに移行するのは面倒で、開発プロセスを中断します。 APIの進化を解決するためにいくつかのツールとアイデアが提案されていますが、ほとんどの更新は手動で行われます。移行ツールの要件をよりよく理解するために、4つのフレームワークと1つのライブラリのAPIの変更を調査しました。既存のアプリケーションを破壊する変更はランダムではなく、特定のカテゴリに分類される傾向があることを発見しました。これらの変更の80%以上はリファクタリングです。これは、リファクタリングベースの移行ツールを使用してアプリケーションを更新する必要があることを示唆しています。
私が使う :
1-名前の変更-より適切なメソッド名を修正する
2-移動-プロジェクトを開始するときのようにパッケージをより良い方法で整理するために、それは非常に小さかったのでioパッケージは必要ありませんが、今はそうです。
3-コメントの生成-.classを作成するとき、GPLライセンスなどの再コピーを避ける
4-正しいインデント-コードを読みやすくするため。