Flash Builderのリファクタリング機能を利用する際の注意点

2012.02.03

Flash Builderのリファクタリング機能で変数名を変更する場合の注意点です。 ファンクションの引数の名前をリファクタリングで変更しようとした時に ローカル変数に同じ名前の変数が宣言されていてもエラーになりません。

(例) コンソールに文字列を引数で渡した文字列を出力するファンクションを定義します。 以下のソースを実行するとコンソールには"a"と出力されます。

protected function creationCompleteHandler(event:FlexEvent):void
{
  method("a");
}

private function method(msg:String):void
{
  var message:String = "b";
  trace(msg);
}

次にmethodの引数のmsgの変数名をリファクタリングでmessageに変えます。 Javaの場合はローカル変数と変数名が重複するのでエラーになりますがAS3では文法上問題ないのでエラーにならず var message:String = "b"; で引数で渡した値が書き換えられてコンソールには"b"と出力されます。

リファクタリングで引数の変数名を変更する際は同じ名前のローカル変数がないかチェックしてからにしましょう。