WebStorm 2018.3ヘルプ

JavaScript のリファクタリング

リファクタリング(英語)は、アプリケーションの動作を変更せずにソースコードを更新することを意味します。リファクタリングはコードを固く保ち、dry(英語)を維持しやすくします。

シンボルの移動リファクタリング

WebStormは、ファイルやフォルダを移動するだけでなく、JavaScriptのトップレベルシンボルを移動することもできます。シンボルの移動リファクタリングは、ES6モジュールのクラス、関数、および変数に対して機能します。

クラス、関数、または変数を移動するには

  1. 移動するシンボルを選択します。

  2. コンテキストメニューまたはメインメニューで F6 を押すか、リファクタリング | 移動を選択します。モジュール・メンバーの移動ダイアログが開きます。

  3. 宛先ファイルを指定し、移動するメンバーを選択します。

  4. デフォルトでは、WebStormはメンバーの可視性を必要なレベルまで自動的に上げます。可視性レベルを変更しない場合は、可視性そのままをクリックします。

クラスメンバを取得するリファクタリング

クラスメンバーを引き上げるリファクタリングは、現在のクラスからスーパークラスにクラス階層を上に移動します。

サンプル: クラスメソッドをスーパークラスに移動する
抽象クラス Departmentを拡張するクラス AccountingDepartment があるとします。

class Department { name; printName() { console.log("Department name: " + this.name); } } class AccountingDepartment extends Department { printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }

この例では、クラスメンバーを引き上げるリファクタリングが printMeeting() 会議を AccountingDepartment からそのスーパークラス Departmentに移動します。

class Department { name; printName() { console.log("Department name: " + this.name); } printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } } class AccountingDepartment extends Department { generateReports() { console.log("Generating accounting reports..."); } }

クラスのメソッドをスーパークラスに移動するには

  1. メンバーを引き上げるクラス内の任意の場所にカーソルを置きます。

  2. メインメニューまたはコンテキストメニューでリファクタリング | メンバーのプル・アップを選択します。メンバーのプル・アップダイアログが開きます。

  3. ドロップダウンリストから、メソッドを移動するスーパークラスを選択します。

  4. メソッドをプルアップするには、引き上げるメンバーリストでそのメソッドの横にあるチェックボックスを選択します。

名前の変更リファクタリング

任意の言語のコンテキストで使用できるファイルとフォルダの名前を変更するに加えて、クラス、関数、変数、およびパラメータの名前を変更することもできます。WebStormはシンボルの名前を宣言で変更し、デフォルトでは現在のプロジェクトでのすべての使用箇所を変更します。

関数、クラス、または変数の名前を変更するには

  1. エディタで、名前を変更するシンボルを選択し、コンテキストメニューまたはメインメニューで Shift+F6 を押すか、リファクタリング | 名前の変更を選択します。

  2. 開いている名前変更ダイアログに、シンボルの新しい名前を入力します。

  3. 必要に応じて、コメントと文字列内を検索および文字列の使用箇所を検索チェックボックスを選択して、コメント、文字列リテラル、およびテキストの関数またはクラスの使用方法を変更します。

  4. 必要に応じて、変更をプレビューして適用します

パラメータの名前を変更するには

  1. エディタでパラメータを選択し、 Shift+F6 を押すか、コンテキストメニューまたはメインメニューでリファクタリング | 名前の変更を選択します。

  2. 選択したパラメータの周囲に赤いキャンバスが表示されたテキストボックスに、新しいパラメータ名を入力します。

  3. リファクタリングを実行するには、 Enter を押します。

クラスの名前を保持し、準拠してファイルを格納する

クラスの名前を変更すると、WebStormは同じ名前のファイルの名前を変更することを提案します。提案を受け入れると、WebStormは他のファイルのインポート文でこのファイルの名前を更新します。

この提案を拒否した場合は、後でいつでもファイルの名前変更... インテンションアクションを使用してファイルの名前を変更できます。別のインテンションアクションは、クラスを対応する名前の新しいファイルに移動することを提案します。提案された名前のフォーマットは、コード・スタイル: JavaScriptページのファイル名規約リストから選択されたスタイルによって決まります。

ws_js_refactoring_rename_file_intention_custom_naming_convention.png

抽出リファクタリング

WebStormは、パラメータ、変数、定数、フィールド、メソッド、関数を導入するためのさまざまな抽出リファクタリングを提供します。これらのリファクタリングを実行するには、リファクタリングする式を選択し、リファクタリング | 抽出 | <target>を選択します。式全体を選択するか、カーソルをその中の任意の場所に置くことができ、WebStormが選択に役立ちます。

パラメーターの導入

パラメーターの導入リファクタリングを使用して、関数呼び出しの式をパラメータで置き換えます。WebStormは、それに応じて関数の宣言と呼び出しを更新します。新しいパラメータのデフォルト値は、関数本体の中で初期化することも、関数呼び出しを渡すこともできます。

関数 calculate_sum(i)にハードコードされた 1 を持つコードがあるとします。Extract Parameterリファクタリングでは、このハードコードされた 1i2 パラメータに置き換えることができます。新しい i2 パラメータは、オプションまたは必要に応じて抽出できます。

例1: オプションのパラメータの抽出
新しいパラメータ i2 がオプションのパラメータとして抽出されます。新しいパラメータは calculate_sum(i) の本体で初期化され、 show_sum()calculate_sum(i) の呼び出しは変更されません。

function calculate_sum(i) { alert('Adding ' + 1 + ' to ' + i); return 1 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }

function calculate_sum(i, i2) { i2 = i2 || 1; alert('Adding ' + i2 + ' to ' + i); return i2 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }

例2: 必要なパラメータの抽出
新しいパラメータ i2 が必要なパラメータとして抽出され、 show_sum()calculate_sum(i) の呼び出しがそれに応じて変更されます。

function calculate_sum(i) { alert('Adding ' + 1 + ' to ' + i); return 1 + i; } function show_sum() { alert('Result: ' + calculate_sum(5)); }

function calculate_sum(i, i2) { alert('Adding ' + i2 + ' to ' + i); return i2 + i; } function show_sum() { alert('Result: ' + calculate_sum(5, 1)); }

パラメータを抽出するには

  1. エディタで、パラメータに変換する式内にカーソルを置き、コンテキストメニューまたはメインメニューで Ctrl+Alt+P を押すか、リファクタリング | 抽出 | パラメーターを選択します。

  2. 現在のカーソル位置で複数の式が検出された場合は、リストで必要な式を選択します。

    ws_js_extract_parameter_select_expression.png

  3. 選択した式が複数見つかった場合は、複数の出現箇所が見つかりましたポップアップメニューでこの出現箇所だけを置換するまたは出現箇所をすべて置換を選択します。

    ws_js_extract_parameter_multiple_occurrences.png
    最後に、リファクタリングを設定するためのポップアップウィンドウが表示されます。
    ws_js_extract_parameter_specify_parameter_name_and_type.png

  4. JSDoc の生成を選択すると、JSDocコメントブロックが生成されます。これは、カスタムデフォルトパラメータ値を指定する必要がある場合に役立ちます。JSDoc(英語)の公式ウェブサイトから詳細を学んでください。

  5. 必要に応じて、新しいパラメータのタイプ(オプションまたは必須)を選択し、デフォルト値を指定します。
    • オプションのパラメータチェックボックスが選択されている場合、パラメータはファンクション本体のデフォルト値で初期化されます。

    • オプションのパラメータチェックボックスをオフにすると、既定のパラメータ値が既存の関数呼び出しを介して渡されます。新しい関数シグネチャに従ってすべての関数呼び出しが変更され、パラメータの初期化が関数本体に追加されます。

    最初に、WebStormはリファクタリングがデフォルト値として呼び出された式を受け入れます。ほとんどの場合、変更する必要はありません。それでも必要な場合は、JSDocコメントに別のデフォルト値を @param <parameter name> - <default value>の形式で指定します。
  6. 提案されたパラメータ名の1つをポップアップリストでダブルクリックするか、赤いキャンバスでテキストボックスにカスタム名を指定して受け入れます。準備ができたら Enter を押します。

    ws_js_extract_parameter_result.png
    また、ES6コードでは、 i2 = i2 || 1;の代わりに新しいデフォルト関数のパラメータ構文 function calculate_sum(i, i2 = 1) が適用されます。https://developer.mozilla.orgウェブサイト(英語)のデフォルト機能パラメータの詳細をご覧ください。

リファクタリングモードの選択

上記のように、エディタ(インプレースモード)でパラメータを抽出するか、パラメータ抽出ダイアログを使用することができます。これら2つのアプローチはかなり似ていますが、違いは次のとおりです。

  • リファクタリングの結果をプレビューします
    ダイアログボックスで、プレビューをクリックし、検索ツールウィンドウの専用タブで期待される変更を調べることができます。インプレースモードでは、この機能は使用できません。

  • デフォルトのパラメータ値の指定
    ダイアログボックスで、WebStormは、提案を受け入れるか、別の値を指定できるフィールドのデフォルトのパラメータ値を提案します。インプレースモードでは、WebStormはリファクタリングが呼び出された式をデフォルトのパラメータ値として扱います。別の値を指定するには、JSDocコメントブロックを使用する必要があります。

デフォルトでは、WebStormはインプレースモードでパラメータ抽出リファクタリングを実行します。パラメーターの導入ダイアログボックスを使用するには、設定/環境設定ダイアログ(Ctrl+Alt+S)で、エディター | 一般をクリックします。開いている一般ページで、リファクタリング領域のインプレース・モードを使用可能にするチェックボックスをクリアします。

変数の導入

式を関数スコープ変数 (var)(英語)ブロックスコープ変数 (let)(英語)、または定数(英語)に置き換えるには、変数の導入リファクタリングを使用します。このリファクタリングにより、ソースコードを読みやすく保守しやすくなります。また、ハードコードされた定数を値や目的について何の説明もしないで使用するのを避けるのに役立ちます。

return ステートメントに部分的にハードコードされた式を持つ関数があるとします。

Parenizor.method('toString', function ()) { return '(' + this.getValue() + ')'; }
変数を抽出するリファクタリングでは、 '(' + this.getValue() + ')' 式を変数( stringなど)で置き換えることができます。抽出される変数の範囲は、宣言(var または let)で使用されるステートメントと、新しい変数が宣言されたコンテキスト(関数の内部または外部)によって異なります。

例1: letステートメント宣言でブロックスコープ変数を抽出する
変数 string は、 return ステートメントの '(' + this.getValue() + ')' 式から抽出されます。新しい変数は、 Parenizor.method('toString', function ())内で let ステートメントで宣言されます。

Parenizor.method('toString', function ()) { return '(' + this.getValue() + ')'; }

Parenizor.method('toString', function ()) { let string = '(' + this.getValue() + ')'; return string; }

例2: 変数を抽出し、関数の外で宣言する
変数 appNamenavigator.appName 式から抽出され、関数外の var ステートメントで宣言されます。

var browserName = "N/A"; if (navigator.appName.indexOf("Netscape") != -1) { browserName = "NS"; } else if (navigator.appName.indexOf("Microsoft") != -1) { browserName = "MSIE"; } else if (navigator.appName.indexOf("Opera") != -1) { browserName = "O"; }

var browserName = "N/A"; var appName = navigator.appName; if (appName.indexOf("Netscape") != -1) { browserName = "NS"; } else if (appName.indexOf("Microsoft") != -1) { browserName = "MSIE"; } else if (appName.indexOf("Opera") != -1) { browserName = "O"; }

変数を抽出するには

  1. エディタで、変数に変換する式を選択し、コンテキストメニューまたはメインメニューで Ctrl+Alt+V を押すか、リファクタリング | 抽出 | 変数を選択します。

  2. 現在のカーソル位置で複数の式が検出された場合は、リストで必要な式を選択します。

    ws_js_refactoring_extract_variable_inplace_select_expression.png

  3. 選択した式が複数見つかった場合は、複数の出現箇所が見つかりましたポップアップメニューでこの出現箇所だけを置換するまたは出現箇所をすべて置換を選択します。

    ws_js_refactoring_extract_variable_inplace_multiple_occurrences.png
    最後に、リファクタリングを設定するためのポップアップウィンドウが表示されます。

  4. ポップアップメニューで、新しい変数の宣言で使用するステートメントを選択します。
    ws_js_refactoring_extract_variable_inplace_choose_scope_type.png
  5. 提示された変数名の1つをポップアップリストでダブルクリックするか、テキストボックスにカスタム名を指定して受け入れます。準備ができたら Enter を押します。

リファクタリングモードの選択

上記のようにエディタ(インプレースモード)で変数を抽出するか、変数の抽出ダイアログを使用することができます。デフォルトでは、WebStormはインプレースモードでExtract Variableリファクタリングを実行します。変数の導入ダイアログを使用するには、設定/環境設定ダイアログ(Ctrl+Alt+S)で、エディター | 一般をクリックします。開いている一般ページで、リファクタリング領域のインプレース・モードを使用可能にするチェックボックスをクリアします。

フィールドの導入

フィールドの導入リファクタリングでは、新しいフィールドが宣言され、選択された式で初期化されます。元の式はフィールドの使用箇所に置き換えられます。

以下の例では、同じフィールド _calcAreaが抽出されています。この例は、抽出されたフィールドを初期化する3つの異なる方法を示しています。

例1: 抽出されたフィールドは、囲みメソッドで初期化されます。

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } _calcArea; get area() { this._calcArea = this.calcArea(); return this._calcArea; } calcArea() { return this.height * this.width; } }

例2: 抽出されたフィールドは宣言で初期化されます。

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } _calcArea = this.calcArea(); get area() { return this._calcArea; } calcArea() { return this.height * this.width; } }

例3: 抽出されたフィールドは、クラスのコンストラクタで初期化されます。

class Rectangle { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea(); } calcArea() { return this.height * this.width; } }

class Rectangle { constructor(height, width) { this._calcArea = this.calcArea(); this.height = height; this.width = width; } _calcArea; get area() { return this._calcArea; } calcArea() { return this.height * this.width; } }

フィールドを抽出するには

  1. エディタでフィールドに変換する式を選択し、コンテキストメニューまたはメインメニューで Ctrl+Alt+F を押すかリファクタリング | 抽出 | フィールドを選択します。フィールドの導入ダイアログが開きます。

  2. リストから提案された名前の1つを受け入れるか、カスタム名を入力します。

  3. 新しいフィールドをどこで初期化するかを選択します。
    • 現在のメソッド、上記の例1を参照してください。

    • フィールド宣言、上記の例2を参照してください。

    • クラス・コンストラクター、上記の例3を参照してください。

    ws_js_extract_field_dialog_1.png

メソッドの抽出

メソッドの抽出リファクタリングでは、抽出されたコードで名前付きのメソッドまたは関数を作成できます。メソッドの抽出リファクタリングが呼び出されると、WebStormは選択されたコードフラグメントの入力である変数と、それに対する出力である変数を検出します。検出された出力変数は、抽出されたメソッドまたは関数の戻り値として使用されます。

以下の例では、 c = a + b; 式から関数を抽出しています。

例1: 他の関数内の式からグローバルスコープ関数を抽出する
リファクタリングが呼び出される c = a + b; 式は、 MyFunction() 関数内にあります。グローバル宛先スコープが選択されます。

例1.1:関数宣言を生成する

function MyFunction(a,b) { c = a + b; return (c * c); } result = MyFunction(4,6); document.write(result);

function extracted(a, b) { c = a + b; } function MyFunction(a,b) { extracted(a, b); return (c * c); } result = MyFunction(4,6); document.write(result);

例1.2:抽出された関数が式の中で宣言されている

function MyFunction(a,b) { c = a + b; return (c * c); } result = MyFunction(4,6); document.write(result);

let extracted = function (a, b) { c = a + b; }; function MyFunction(a,b) { extracted(a, b); return (c * c); } result = MyFunction(4,6); document.write(result);

例2: 関数外の式からグローバルスコープ関数を抽出する
リファクタリングが呼び出される c = a + b; 式は、どの関数の外にもあります。したがって、目的地の範囲を選択することはできません。

例2.1:関数宣言を生成する

c = a + b;

function extracted() { c = a + b; } extracted();

例2.2:抽出された関数は式の中で宣言されます

c = a + b;

let extracted = function () { c = a + b; }; extracted();

例3: 囲み関数内の定義を持つ関数を抽出する
リファクタリングが呼び出される c = a + b; 式は、 MyFunction() 関数内にあります。関数MyFunction宛先スコープが選択されます。

function MyFunction(a,b) { c = a + b; return (c * c); } result = MyFunction(4,6); document.write(result);

function MyFunction(a,b) { function extracted() { c = a + b; } extracted(); return (c * c); } result = MyFunction(4,6); document.write(result);

関数を抽出するには

  1. エディタで、関数に変換するコードフラグメントを選択し、コンテキストメニューまたはメインメニューで Ctrl+Alt+M を押すか、リファクタリング | 抽出 | メソッドを選択します。

  2. 選択した式が関数内にある場合は、ポップアップリストから目的のスコープを選択します。
    • グローバルを選択すると、抽出された関数は関数の外で宣言されます。上記の例1を参照してください。

    • 現在の囲み関数内で抽出された関数を定義するには、関数<現在の包含関数名>を選択します。上記の例3を参照してください。

  3. さらに多くのオプションで関数の抽出ダイアログを開くには、もう一度 Ctrl+Alt+M を押します。このダイアログでは、抽出された関数を生成された関数宣言(英語)または表現の中で(英語)で宣言するかどうかを選択できます。上記の例を参照してください。

デフォルトで関数抽出ダイアログを開くには

  • 設定/環境設定ダイアログ(Ctrl+Alt+S)で、エディター | 一般をクリックします。開いている一般ページで、リファクタリング領域のインプレース・モードを使用可能にするチェックボックスをクリアします。

スーパークラスの抽出

スーパークラスの抽出リファクタリングは、現在のクラスのメンバに基づいて新しい抽象クラスを作成します。作成されたクラスは自動的に拡張されます。

クラス AccountingDepartment を持っていて、そこからの printName() メソッドが再利用されることを期待しているとします。

class AccountingDepartment { name; printName() { console.log("Department name: " + this.name); } printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }
スーパークラス Department を抽出し、その中に printNameName フィールドを含めることができます。
class Department { name; printName() { console.log("Department name: " + this.name); } } class AccountingDepartment extends Department { printMeeting() { console.log("The Accounting Department meets each Monday at 10am."); } generateReports() { console.log("Generating accounting reports..."); } }

スーパークラスを抽出するには

  1. スーパークラスを抽出するクラス内の任意の場所にカーソルを置きます。

  2. メインメニューまたはコンテキストメニューでリファクタリング | 抽出 | スーパークラスを選択します。スーパークラスの抽出ダイアログが開きます。

  3. 新しいスーパークラスの名前を指定し、そこに含めるクラスメンバーの横にあるチェックボックスを選択します。必要に応じて、抽象化したいメンバーにマークを付けます。

  4. 宛先ファイルフィールドに、新しいクラスが配置されるファイルの場所を指定します。デフォルトでは、フィールドにはリファクタリングが呼び出された現在のファイルへのパスが表示されます。

  5. スーパークラスの抽出を選択します。WebStormは新しいクラスを作成し、ソースクラスに extendsをマークします。
    スーパークラスを作成し、ソースクラスへの参照をメソッドのパラメータでスーパークラスへの参照に置き換えるには、スーパークラスを抽出し、可能な限り使用するを選択します。WebStormは、検索ツールウィンドウのリファクタリング・プレビューペインで提案された変更を表示します。

Vue コンポーネントの抽出

Extract Vue Componentリファクタリングを使用すると、既存のVue.js(英語)コンポーネントをコピーして貼り付けなくても抽出できます。このリファクタリングはインプレースでのみ機能するので、エディター: 一般ページでインプレース・モードを使用可能にするチェックボックスが選択されていることを確認してください。

Vue.jsコンポーネントを抽出するには

  1. 抽出するテンプレートフラグメントを選択し、メインメニューまたは選択項目のコンテキストメニューでリファクタリング | 抽出 | Vue コンポーネントの抽出を選択します。

  2. 新しいコンポーネントの名前を入力します。この名前がすでに使用されているか無効である場合、WebStormは警告を表示します。それ以外の場合は、新しい単一ファイルコンポーネントが作成され、親コンポーネントにインポートされます。

インライン化リファクタリング

インラインリファクタリングは抽出リファクタリングとは逆です。

例1: 変数のインライン化
変数のインライン化リファクタリングは、変数または定数の冗長な使用を初期化子で置き換えます。このタイプのリファクタリングは、ブロックスコープと関数スコープの変数でのみ使用できます。

Parenizor.method('toString', function () { var string = '(' + this.getValue() + ')'; return string; }

Parenizor.method('toString', function () { return '(' + this.getValue() + ')'; }

例2: 関数のインライン化
メソッドのインライン化 / 関数のインライン化リファクタリングでは、メソッドまたは関数の本体を呼び出し元の本体に配置します。メソッド/関数自体は削除されます。
以下の例では、 Sum() の本体が Multiplication()Division()の本体に配置されています。

function Sum(a, b) { return a + b; } function Multiplication(a, b) { c = Sum(a, b); d = c * c; return d; } function Division(a, b) { c = Sum(a, b); d = Multiplication(a, b); result = c / d; return result; }

function Multiplication(a, b) { c = a + b; d = c * c; return d; } function Division(a, b) { c = a + b; d = Multiplication(a, b); result = c / d; return result; }

インラインリファクタリングを実行するには

  1. エディタで、カーソルをインライン化するシンボルに置き、コンテキストメニューまたはメインメニューで Ctrl+Alt+N を押すか、リファクタリング | インライン化を選択します。

  2. 選択したシンボルに対応するインライン化ダイアログボックスで、インラインリファクタリングを確認します。

シグネチャリファクタリングの変更

ファンクション名の変更、パラメータの追加、削除、並べ替え、名前の変更、および呼び出しの階層を介した新しいパラメータの伝播には、シグネチャーの変更リファクタリングを使用します。

以下の例は、Change Signatureリファクタリングを実行するさまざまな方法を示しています。すべての場合、関数 result()generate_result() に名前が変更され、新しいパラメータ input がこの関数に追加されます。これらの例は、リファクタリングの設定によって、ファンクションコール、呼び出しファンクション(show_result())、その他のコードフラグメントがどのように影響を受けるかを示しています。

例1: 関数の名前を変更し、パラメータを追加し、その値を関数呼び出しに渡す
この例では、関数 result() の名前が generate_result()に変更され、パラメータ input が追加され、値 100 が関数呼び出しのパラメータとして渡されます。

function result() { } function show_result() { alert('Result: ' + result()); }

function generate_result(input) { } function show_result() { alert('Result: ' + generate_result(100)); }

例2: 関数名の変更とデフォルトパラメータの追加
この例では、関数 result() の名前が generate_result()に変更されています。デフォルトパラメータ input に値 100が追加されます。新しいパラメータは、 generate_result() でES6言語レベルの場合は function generate_result(input = 100) {} 、ES5の場合は input = input || 100 の形式で初期化されます。

function result() { } function show_result() { alert('Result: ' + result()); }

function generate_result(input = 100) { } function show_result() { alert('Result: ' + generate_result()); }

例3: 関数の名前の変更、デフォルトパラメータの追加、関数呼び出しへのパラメータの伝播
この例では、関数 result() の名前が generate_result()に変更されています。デフォルトパラメータ input に値 100が追加されます。新しいパラメータは、 generate_result() でES6言語レベルの場合は function generate_result(input = 100) {} 、ES5の場合は input = input || 100 の形式で初期化されます。 input パラメータは、呼び出し関数show_result()を介して伝播されるので、関数呼び出しはそれに応じて変更されます。

function result() { } function show_result() { alert('Result: ' + result()); }

function generate_result(input = 100) { } function show_result() { alert('Result: ' + generate_result()); }

Change Signatureを呼び出すには

  • エディタでリファクタリングする関数名にカーソルを置き、コンテキストメニューまたはメインメニューで Ctrl+F6 を押すかリファクタリング | シグネチャーの変更を選択します。シグネチャーの変更ダイアログが開きます。

関数の名前を変更するには

  • シグネチャーの変更ダイアログ(Ctrl+F6)で、名前フィールドを編集します。

関数のパラメータを管理するには

  • シグネチャーの変更ダイアログ(Ctrl+F6)で、パラメータの表とその右側のボタンを使用します。
    • 新しいパラメータを追加するには、 icons general add svgAlt+Insert)をクリックし、新しいパラメータの名前とデフォルト値、または関数呼び出しで渡す値を指定します。

    • パラメータを削除するには、対応する行のいずれかのセルをクリックし、 icons general remove svgAlt+Delete)をクリックします。

    • パラメータの順序を変更するには、 icons actions previousOccurence svgAlt+Up)と icons actions nextOccurence svgAlt+Down)を使用します。

    • パラメータの名前を変更するには、名前フィールドを編集します。

    • 必要に応じて、新しいパラメータを現在の関数を呼び出す関数に伝播します。

コールの階層に沿ってパラメータを伝播するには

  1. シグネチャーの変更ダイアログ(Ctrl+F6)でパラメータを選択し、 propagateParametersをクリックします。新規パラメーターを伝播するメソッドの選択ダイアログが開きます。左側のペインには、関数呼び出しの階層が表示されます。関数を選択すると、右側のペインには、そのコードとそれが呼び出す関数のコードがそれぞれ呼び出し元メソッドおよび呼び出し先メソッドフィールドに表示されます。

  2. 左側のペインで、パラメータを伝播する機能の横にあるチェックボックスを選択し、OKをクリックします。

変更をプレビューしてリファクタリングを完了するには

  1. シグネチャーの変更ダイアログで、プレビューをクリックします。

  2. 検索ツール・ウィンドウリファクタリング・プレビュータブで、予想される変更を表示し 、必要な調整を行い、準備ができたらリファクタリング実行をクリックします。

最終更新日: 2018年12月12日

関連事項