web-dev-qa-db-ja.com

Eclipse:最も便利なリファクタリング

たびたび、Eclipseのリファクタリング機能を利用しています。いくつかのテクニックは他のテクニックよりも明白であり、私が試したことのないテクニックもあります。

あなたにとって最も役立つリファクタリングとその理由は何ですか?

注:このプレゼンテーションは非常に便利だと思います。おそらく、サンプルドリブンなので理解しやすいからです。

" 全員向けのリファクタリング-Eclipseの自動リファクタリング機能を使用する方法と理由 "

編集:この記事も役立ちます(ありがとう、ジッター)

Eclipse JDTのリファクタリング関数を調べる

44
Adrian

興味深い質問です。自分にとって何が効果的かはわかっていますが、他の人が何を使っているかを見るのは興味深いです。

最も一般的に使用されるリファクタリングコマンドを決定するために、より科学的なアプローチを取ることにしました。 Eclipseには sage Data Collector(UDC) 機能が組み込まれています。データは 公開 です。データを取得して、最も一般的に使用される編集コマンドを示す次のグラフを抽出しました(ナビゲーションコマンドなし)。

代替テキストhttp://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

しかし、私はインポートのフォーマットと整理のための「アクションの保存」を強く信じています( それに関する私の記事 を読んでください)。コメントアクションも削除します。画像は次のようになります。 alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif

52
zvikico

Rename-意味のある名前を付けることが自己文書化コードを書くための最良の方法だからです。 Shift+Alt+R

メソッドの抽出-メソッドが長くなりすぎる場合。 Shift+Alt+M

定数の抽出-マジックナンバーが悪いため。 Shift+Alt+T (リファクタリングメニュー、直接のショートカットはありません)。

Inline/introduce variable-メソッドから混乱を取り除くため。 Shift+Alt+I (列をなして)、 Shift+Alt+L (導入する)

30
abyx

私のお気に入り(使用順):

  1. 名前の変更(Alt-Shift-R、またはCtrl-1ファイル内の名前の変更を高速化するため)
    適切な名前変更変数、メソッドなど。副作用なし。
  2. 変数の抽出(Ctrl-1Alt-Shift-L
    クイックメイドの100文字の行をステップに分割するのに適しています。
  3. 抽出メソッド(Alt-Shift-M
    副作用のないコードからメソッドを作成します。
  4. 分割変数宣言(Ctrl-1
    宣言で変数を初期化し、初期化はtryブロックまたはifブロックで行う必要があることがわかりました。
  5. メソッドシグネチャの変更(Alt-Shift-C
    新しいパラメータのデフォルト値を含む、メソッドシグネチャ操作の便利なスイスアーミーナイフ。
  6. プルアップ/プッシュダウンメソッドと変数をジェネリックインターフェイスまたはスーパークラスにプルするか、サブクラスにプッシュダウンする
  7. インターフェース/スーパークラスの抽出
    現在のクラスからインターフェースまたはスーパークラスを抽出します。とても便利な。
20
Hardcoded

私のお気に入り:

  1. 名前変更
  2. プルアップ/プッシュダウン
  3. 抽出方法
7
Andreas_D

最も一般的なリファクタリングが述べられており、私はそれらに完全に同意します。

コードフォーマッターSource)、Formatまたは CtrlShiftF)はIDE私は非常によく使用します。確かに、リファクタリングではありませんが、コーディングスタイルを維持しながらコードの可読性を向上させます。単に設定JavaコードスタイルFormatterそして、Eclipseにコードをどのように見せたいかを教えてください!

ゲッターとセッターの生成は、Java Bean。

4
Paul Lammertsma

Eclipseは、おそらくすべての一般的なIDEに対して最も少ないリファクタリングを備えています。 NetbeansまたはIntelliJ(Communityエディションは無料)を検討するかもしれません。逆に、Eclipseにはおそらく最高のデバッガーがあります。 ;)

コードを記述するときにリファクタリングを使用します(これにより、書き込みが約15%速くなります)。そのため、IntelliJは、私にとってはあまり役に立たないコードをリファクタリングできます。他のIDEもこれをサポートしているかもしれません(誰か知っていますか?).

印刷物(元々Eclipseで作成)からのファイルの再入力をテストしましたが、IntelliJ(Eclipseと比較して)でファイルを入力するときにキーが30%減り、マウスの動きが50%減りました。

3
Peter Lawrey

私のお気に入りは:

1)名前の変更-メソッド名、変数名、クラス名、フィールドで機能します。名前のあるものなら何でもかまいません。
2)匿名クラスをネストに変換-デバッグを支援し、1か所でしか使用しないと考えていたロジック(コンパレータなど)を再利用できます。
3)メンバータイプをトップレベルに変換する-匿名クラスをネストされたクラスにした後、クラスが他の場所で役立つことがよくあります。このリファクタリングは完璧です。

2
Spina

赤い罫線部分でCTRL + 1、つまりクイックフィックス。

1
jeff porter

Extractメソッドが好きです(Alt+Shift+M)、および 3.6M1 であるため、continueステートメントを含む選択を処理するようになりました。

既存のコードのセマンティクスを保持するには、選択にループの最後のステートメントを含める必要があります。抽出されたメソッドでは、次の値を返すようにcontinueステートメントが変更されます。

continue http://download.Eclipse.org/Eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-continue.pngを使用したメソッドリファクタリングの抽出

抽出されたメソッドで複数の戻り値を必要とする選択について、Eclipseはエラーメッセージに競合する変数をリストします。

あいまいな戻り値エラーで抽出メソッドのリファクタリングhttp://download.Eclipse.org/Eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-multiple-return-values.png

1
VonC

最もよく使用するのは、名前の変更、メソッドの抽出、メソッドシグネチャの変更です。

1
Yishai

この研究を読む価値もあります: APIはどのように進化しますか?リファクタリングのストーリー。 D. DigおよびR. Johnson。

著者は、変更の80%がリファクタリングであることに気付き、分類しました。以下に要約を示します。

フレームワークとライブラリはAPIを変更します。アプリケーションを新しいAPIに移行するのは面倒で、開発プロセスを中断します。 APIの進化を解決するためにいくつかのツールとアイデアが提案されていますが、ほとんどの更新は手動で行われます。移行ツールの要件をよりよく理解するために、4つのフレームワークと1つのライブラリのAPIの変更を調査しました。既存のアプリケーションを破壊する変更はランダムではなく、特定のカテゴリに分類される傾向があることを発見しました。これらの変更の80%以上はリファクタリングです。これは、リファクタリングベースの移行ツールを使用してアプリケーションを更新する必要があることを示唆しています。

0
ewernli

私が使う :

1-名前の変更-より適切なメソッド名を修正する

2-移動-プロジェクトを開始するときのようにパッケージをより良い方法で整理するために、それは非常に小さかったのでioパッケージは必要ありませんが、今はそうです。

3-コメントの生成-.classを作成するとき、GPLライセンスなどの再コピーを避ける

4-正しいインデント-コードを読みやすくするため。

0
Nettogrof