eclipse : FDT5 : ソースコード整形周り不具合や要望
最近 twitter にて FDT と FlashBuilder の比較をされている方がいて、FDT を利用している私としては「ああ、そこらへん不便だなあ」と感じる箇所も挙げられています。
FDT は設定によっては Windows だと不安定だ、という話ですが、こちら FDT をメインPCとノートPCで長らく併用しているものの あまり気になった事はないかもしれません。もしくは、自然とそうならないような手順を踏んでいるだけなのかも?
問題点 problem
コードフォーマットに関しては、挙げられている通りの不便な箇所があります。
FDT の自動補完機能は大変便利だったりしますが、その機能経由でコード出力を行うと、任意で行ったコードフォーマット設定が無視され、FDT デフォルトのコードフォーマットで出力されてしまう場合があります。
例えば FDT5 で新たに追加された「ローカル変数をフィールド変数にコンバートする機能」を用いると、以下のようにフィールド変数名とクラス名の間にスペースがある状態で変換されてしまいます。
・変換前
package pingball { public class Test { public function Test() { var arr:Array = new Array(); } } }
・変換後
package pingball { public class Test { private var arr : Array; public function Test() { arr = new Array(); } } }
上記変数名とクラス名の間のスペースを削除するには、自分で削除するか、ソースコード整形機能(Ctrl + Shift + F)を利用します。
private var arr : Array; ↓ private var arr:Array;
ただし Ctrl + Shift + F を実行するとソースファイル内全てが整形対象となるため、「長い行なので任意で改行している」といった箇所が一行にまとめられてしまう問題が別途発生します。これを避けるためには、マウス(または Shiftを押しながら矢印キー操作)で整形を行いたい範囲をハイライトした後、Ctrl + Shift + F コマンドを実行すればよしとなります。
ハイライト範囲指定からの整形コマンド実行は面倒なので、デフォルトでサポートして欲しい所です。
不具合 bug
FDT5の「ローカル変数をフィールド変数にコンバートする機能」(Advanced Refactoring)ですが、「コンバート対象行末のセミコロンが消える」という不具合があります。おそらく次のバージョン FDT5.1 で対応されるのではないかと思われますが対応されなかったらメール予定。
公式の図にも見事消えている様が確認できるため、何かそのようになっているのには意図があるのだろうかとも思ってしまいました。以下 URL 内の図「new ExtractMe()」の行でセミコロンが消えている箇所があります。
要望 request
上記触れている Advanced Refactoring にて、「値から変数名を自動生成する機能」があります。
new MyClass(); ↓ var extracted:MyClass = new MyClass();
値がクラス生成の場合 extracted という変数名が自動的に割り振られるのですが、この変数名は クラス名の頭文字を小文字にしたものにして欲しい、という要望があります。
new MyClass(); ↓ var myClass:MyClass = new MyClass();
現在の私のコーディングスタイルとしては、クラスインスタンス名は クラス名の頭文字を小文字にしたものを利用する事が大半となっています。変数名は多少冗長になろうとも、ソースコードを文章として読む際それがベターかな、という考えからです。
この変換処理で何か問題がなければ、是非とも実装してほしいなあと考えており、要望を出す予定です。
その他
FDT のアップグレードに伴う機能拡大は喜ばしい一方、私のノートPC のスペックでは動作が非常に重くなってきてしまっている、という難点があります。
ノートPCではテキスト入力(プログラミング)を行う程度だから、スペックはそんなに高いものでなくても良く、何年も使えるだろう、と考えていましたが、ここまで重くなるのはまったくの考慮外でした。
動作が遅いため、タイピング速度に補完表示機能が追いつかず、単語を打つ度に少々の待ち時間が発生する等、結構なストレスとなってしまっています。なんとも悩ましい問題です。