March 26, 2007

まずは前回の宿題から。

宿題:extends および implements 時の補完で、importしていないものを対象とする方法

正解は、Ctrl + Alt + Space でした。

ということで、今回はコード補完(Code Completion)について掘り下げてみます。


IDEA の コード補完には以下の4つのタイプがあります。
・Basic (Ctrl + Space)
・Smart Type (Ctrl + Shift + Space)
・Class Name (Ctrl + Alt + Space)
・Word (Ctrl + Space)/(Ctrl + Alt + Shift + Space)

Basic (Ctrl + Space)
現在のスコープ 内のクラス、メソッド、変数、Javaキーワード、よく使われる名前(ArrayListの変数名ならarrayList とか list とか)の補完を行います。

Smart Type (Ctrl + Shift + Space)
Basicの結果を、予期されるものだけ に絞り込みます。
・ 代入の右辺では、左辺に代入可能な変数のみ表示
・ return文では、return可能なものだけ表示
・ 代入文の右辺の"."の後では、左辺の型を返すメソッドやフィールドのみ表示
・ newでは、左辺に代入可能なクラスのみ表示
・ throw new では、そのスコープで返しうる例外のみ表示
・ javadoc の @exception は、そのスコープで返しうる例外のみ表示
・ インタフェースやAbstractクラスをnewする場合は、実装用のスケルトンを表示

Class Name (Ctrl + Alt + Space)
モジュールスコープ 内のクラス名とインタフェース名を補完します。
カレントスコープに存在しないものが補完された場合は、自動的にimport文を追加します。

Word (Ctrl + Space/Ctrl + Alt + Shift + Space)
単語補完は、javaに関係のない単語の補完を可能にします。
javadocの説明文に書いた文字列を変数名にする場合など便利かも。


コード補完時に、選択肢の選択を Enter ではなく Tab にすると、選択された名前全体がコード補完で上書きされます。コード補完により既存のメソッド名の変更を行う場合などには便利そうですね。

IDEA の Code Completion、メサメサ強力ですね。これだけでもEclipseから乗り換える価値が十分にあるような気がします。


ところで、Code Completion を試しながら思ったんだけど、マウスカーソルを置いた場所にイキナリ書き込みができるのが、どうも気持ち悪い。

例えば、以下のような場合に、※印のところをクリックしてから文字入力をすると、その行の9文字目に入力された方がいいと思うのですが、※の場所に入力されてしまう。
    public void hoge () {
        ← ここにスペースが8個入っている  ※
    }

このほうが都合の良い理由があるのか、それとも設定等による回避方法があるのか、、、。

今日はここまで。


宿題
・入力箇所を、カーソル指定行の、既存入力範囲内もしくはそこへの追加のみにする。



(05:00)

トラックバックURL

コメントする

名前
URL
 
  絵文字