2011年12月9日金曜日

[Intellij]コード補完を使いこなそう

Intellijには、3種類の補完方法が存在します。
Eclipseだと、補完といったらCtrl + Spaceだけ使っていたらいいと思うけど、Intellijだとこの3種類をうまく使いこなせないと、ちょっと残念な感じになってしまう。

ちなみに、3種類の補完は下の画像のように「Code」→「Completion」から使うことが出来ます。(マウス操作で使うことはまずないと思うけど)

それぞれの補完機能の説明

Basic補完

基本的な補完機能。EclipseのCtrl + Spaceで出来る補完機能と同じ感じの補完となる。(Eclipseとは少し違うかもしれませんが、勝手な想像で書いています)
そのスコープ内で使用可能な変数などをもとに補完候補を表示するので、変数やパラメータとして使用出来ないデータ型のものも候補として表示される。

使いどころとしては、変数やパラメータの補完よりかはメソッドの修飾子やthrows節の例外のようにそこで使用する修飾子やクラスや変数が自明な場合に使用します。(と勝手に思っています。)
こんな感じに補完候補が表示されます。

例えばメソッドの引数でBasic補完を使うと、データ型が一致していて代入可能なものがあればその変数を候補として上位に表示してくれます。
下の画像のように、mのパラメータがStringなのでString型の変数が上位に表示されます。

使い方を間違えるとこんな感じに意味のないものが列挙されちゃったりもします。これは間違った使い方だと勝手に思ってますが。

ほかにもpropertyファイルのキー値をこんな感じで補完してくれたりします。ほかにも色々やってくれると思います。(たぶん)


SmartType補完

SmartType補完は、そこで利用可能なもののみにフィルタをかけて候補を表示してくれます。Basic補完のように使用可能な変数やクラスを候補として列挙することはなく、使用可能なものがなければ、ないよと教えてくれます。
この補完にであって、IDEってすげーって思った記憶があります。

使い方としては、変数宣言時の右辺やreturn文などで使います。俺は、補完よりもリファクタリング機能のIntroduce Variable使っちゃうことが多いけど、なれてきたら補完とリファクタリングをうまく使い分けれるようなると思います。

SmartType補完が有効に使える場所
  • 変数宣言時の初期化
  • 初期化で必要なコンストラクタ呼び出しや、メソッド呼び出しなど
  • 変数呼び出しのパラメータ
  • return文
Basic補完との違いは、下の画像を見るとわかると思います。

ClassName補完

補完候補としてクラス名を列挙してくれる機能です。
主に変数宣言時に使いますが、この補完機能を文字列内で使うと選択したクラスの完全修飾名を挿入してくれます。

例えば・・・
java.util.ArrayListを補完候補から選択した場合、文字列には"java.util.ArrayList"が挿入されます。

また、Class Name補完はクラスパス配下にあるファイルも候補として表示してくれます。
なので、クラスパス配下にあるpropertiesやxmlなどのパスを入力する時に、この補完をつかうと入力の手間を減らすことが出来ます。

イメージ的には、こんな感じに補完されます。

補完の俺設定

こだわりがあるのは、Case sensitive completionはFirst letterにしるのと、
ドキュメントとパラメータのポップアップを切ってる部分かな。