IDE の便利な機能 - 名前のリファクタリング


アプリケーションを作るとき、コンポーネントなどの名前が、デフォルトの Form1 とか Button1 のままだと、コードの可読性がいまいち
たとえば pushButton とか、意味をもたせたいですよね

でも、ある程度作ってからだと、修正がめんどくさいなぁ... と思った貴方
痒いところに手が届く仕組みが IDE には用意されています

その1 オブジェクトインスペクタを使う

設計画面のオブジェクトインスペクタで、対象のコンポーネントを選択して、name プロパティの値を変更します
この操作で何が変わるかというと

  • 宣言されている名称が変わる
  • イベントの名称が変わる

しかし、自身で記述したコードの箇所は変わってくれない
なので、このやり方の使いどころは、画面設計を行っているとき、詳細なコードを書き始める前ですね

簡単な例で確認してみます (FireMonkey で作っていますが VCL でも同様です)
単純にフォームにボタンを1つ貼り、ボタンの Click イベントにクリックされたら、ボタン上に表示されている文字が変わるというコードを書いたプロジェクトがあります
設計画面のオブジェクトインスペクタ上で Button1 の Name プロパティの値を Button1 から pushButton に書き換えます

Before

After

コード側はどうなるかを見てみましょう

Before

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Text := '押したよ';
end;

end.

After

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    pushButton: TButton;                         // <<<---- 修正される
    procedure pushButtonClick(Sender: TObject);  // <<<---- 修正される
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.pushButtonClick(Sender: TObject); // <<<---- 修正される
begin
  Button1.Text := '押したよ';  // <<<---- ここは変わらない
end;

end.

その2 リファクタリング機能を使う

IDE にはリファクタリングという「コードによる目的の動作を変えずに、コードを再構成し、変更するために使用する技術」が備わっています
ここでは「名前のリファクタリング」の手順を紹介します

名前のリファクタリングの手順です

コード上で対象となる名前を選択して、マウスを右クリックし、「リファクタリング| xx の名前変更」を選びます

ダイアログが現れますので、新しい名前を設定して [OK] ボタンをクリックします

左上のルービックキューブのようなアイコンをクリックすると名称の変換が行われます

変換後のコードを見てみましょう (設計画面側は、その1と同じなので省略)

After

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    pushButton: TButton;                         // <<<---- 修正される
    procedure pushButtonClick(Sender: TObject);  // <<<---- 修正される
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.pushButtonClick(Sender: TObject);  // <<<---- 修正される
begin
  pushButton.Text := '押したよ';                     // <<<---- 修正される
end;

end.

おわりに

名前のリファクタリング機能ですが、若干制限がありますので注意ください
Delphi の場合は、ジェネリックスの型パラメータの名前は変更できないという制限があります