シンボル名を変更する
リファクタリングの手順:インデックス への移動
コード エディタで Delphi や C++ のコードを編集する場合、[リファクタリング|名前の変更...]メニュー コマンドを使用して、識別子の名前を変更できます。
識別子の名前を変更できるのは、その識別子の元の宣言が自分のプロジェクトにある場合、または自分のプロジェクトが依存している別のプロジェクトにあって、そのプロジェクトが開かれている同じプロジェクト グループ内にある場合です。 この条件に合う、型名、メソッド名、変数、フィールドなどの識別子の名前を変更できます。 Delphi では、ジェネリックスを使って識別子の名前を変更できます。
Delphi での識別子の名前変更
Delphi において、識別子の名前を変更するには、以下の手順に従います:
- コード エディタで識別しを右クリックします。
- [リファクタリング|名称変更 <識別子の種類> "<識別子の名前>"...]コンテキスト メニュー コマンドを選択します。 これは、[identifierType 'identifierName' を変更]ダイアログ ボックスを表示します。
ここでの identifierName には選択した識別子の実際の名前が、identifierType にはその型(メソッド、変数、フィールドなど)が表示されます。
- [新しい名前]フィールドに、識別子の新しい名前を入力します。
- [リファクタリングの前に参照を表示]チェック ボックスを選択し、プロジェクトの各ファイルへの変更をプレビューします。 このオプションをオフにすると、変更はプレビューされずに、リファクタリングがすぐに適用されます。
- OK をクリックします。 [リファクタリング]ペインに、変更される識別子のすべての出現箇所が表示されます。
- [リファクタリング]ペインで、提示された変更を確認して[リファクタリングの適用]アイコン()をクリックすると、表示されているすべてのリファクタリングが実行されます。 また、[リファクタリングの削除]アイコン()をクリックすると、選択したリファクタリングをペインから削除できます。
メモ: [リファクタリング|名称変更 identifierType 'identifierName'] コンテキスト メニュー コマンドは、コンテキストによって変わります。メソッド識別子を選択したならば、コンテキスト メニュー コマンドは [名称変更 メソッド 'methodName' ]となります。 ここでの methodName は選択したメソッドの実際の名前です。このコンテキスト依存性は、ほかのすべての識別子型にも同様に適用されます。
制限(Delphi)
ジェネリックスの名前の変更には、次の制限事項があります。
- ジェネリックスの型パラメータの名前は変更できません。
- つまり、次のような宣言があった場合、
type List<Item> = class ... end;
- 識別子
Item
(型パラメータ)の名前は変更できませんが、識別子List
の名前は変更できます。
C++ での識別子の名前変更
C++ において、識別子の名前を変更するには、以下の手順に従います:
- コード エディタで識別しを右クリックします。
- [リファクタリング|名前変更...]コンテキスト メニュー コマンドを選択します。 [シンボルの名前変更]ダイアログ ボックスが表示されます。
- テキスト フィールドに、識別子の新しい名前を入力します。
- [適用する前に変更をプレビューする]チェック ボックスを選択し、プロジェクトの各ファイルへの変更をプレビューします。 このオプションをオンにしないと、変更はプレビューされずに、リファクタリングがすぐに適用されます。
- OK をクリックします。 [パッチの適用]ペインに、変更される識別子のすべての出現箇所が表示されます。
- [パッチの適用]ペインで、提示された変更を確認して[適用]アイコン()をクリックすると、表示されているすべてのリファクタリングが実行されます。 [削除]アイコン()をクリックすると、選択したリファクタリングをペインから削除できます。
- メモ: この機能に、Clang 拡張コンパイラを使用するプロジェクトが必要となります。
制限(C++)
C++ での名前変更リファクタリングには、次のような制限があります。
- 非アクティブ コード
- コンパイルされていないコードは、リファクタリングできません。 たとえば、アクティブではないプリプロセッサ ブロック内のコードです。
- マクロ
- 識別子がマクロの場合、名前変更リファクタリングは、マクロを名前変更可能な識別子として認識しません。 名前変更された識別子がマクロ内で使用されている場合、名前変更リファクタリングは、それを識別しますが、デフォルトでは、OFF のままに残します。 この変更にアクセス、確認、そして再度有効にしたり、OFF のままにすることができます。
- テンプレート メンバー
- 名前変更リファクタリングは、テンプレート内での名前変更を処理しません。
- メモ: ただし、特殊なテンプレート宣言内におけるテンプレートとその型については、名前変更することができます。 このトピックでの制限は、テンプレート クラスのメンバー メソッドおよび/または変数にのみ適用されます。
- 非 ANSI 文字
- 名前変更リファクタリングは、プロジェクト名やパスにおいて、ANSI 文字以外の文字の使用をサポートしていません。
- コンポーネント名
- C++ での名前変更リファクタリングは、コードでのコンポーネントへの参照を名前変更する際、フォーム ファイル内(.dfm または .fmx)のコンポーネント名まで変更しません。
名前変更リファクタリングのキャンセル
名前変更リファクタリングのプロセスは、進捗ダイアログからキャンセルすることができます。