IntelliJ IDEAも仲間に入れて...

NetBeansとEclipseの比較 - しんさんの出張所 はてなブログ編

IDEA11.1.2を使いましたよ。んで,なになに?

プロジェクトツリーの見た目

NetBeanseclipseと比べてもそう違いは無いけど,プロジェクトの考え方が違くって,いわゆる「ワークスペース」的なものが無い。詳しくは,こちらを参照してね。→ Install IntelliJ IDEA - Help | IntelliJ IDEA


んでユニットテストを作成すると...NetBeansみたくテストコード用のソースパスはあるんだけど,デフォルトでは設定されてないので,なんか適当なフォルダを作って,テストコード置き場に指定しとかないと行けない。IDEA11から(だったと思うけど)はProjectウィンドウから任意のフォルダをテストコード置き場などに指定できるようになったのが便利。
#そうでなければ,「File->Project Structure->Modules->Sources」で設定する。


テストコード置き場(Test Source Root)が設定されていれば,テストコードはそっちに出来上がります。一応,プロダクトコード上で「Navigate->Test」とすればテストコードのひな形を作成します(すでにあれば,そのテストコードに移動)。この辺は,どれも一緒かな。

ユニットテスト

「Navigate->Test」でテストコードを生成させてみたら,こんなのできました。

package hoge;

import org.junit.Test;

public class ComputeTest {
    @Test
    public void testAdd() throws Exception {

    }
}


意外(?)とショボいですね。ちょっと恥ずかしいので,カスタマイズします。「Settings->File Templates->Code->JUnit4 Test Method」を次のように書き換えときます。

@org.junit.Test
public void test${NAME}() throws Exception {
    org.junit.Assert.fail("まだ実装されていません");
    ${BODY}
}


fail()のスタティックimportがされず残念な感じですが「Add static import for 'org.junit.Assert.fail'」ってintension(ALT+Enter)を実行すると,こんな風にはなるよ。

package hoge;

import org.junit.Test;

import static org.junit.Assert.*;

public class ComputeTest {
    @Test
    public void testAdd() throws Exception {
        fail("まだ実装されていません");

    }
}


この評価中「auto import効かないナー」と嘆いていたのだけれど「Settings->Code Style->Java->Imports->Use fully qualified class names」をチェックしてたからだった。うへへ。

補完

IDEA10くらいから勝手に補完が動くようになったので,Ctrl+SPACEもCtrl+SHIFT+SPACEも押す機会はずいぶん減りましたね。例えば以下の例だと「L」ってタイプした時点で補完が出ます。


Lも押したくねぇ」というか「LinkedHashMapなにそれ,おいしいの?」なときは「new 」までタイプしてから「Ctrl+SHIFT+SPACE(Smart Type Completion)」を使います。そすっとこんな感じに補完が出ます。


はじめっから「LinkedHashMap」が選ばれているのは,直前にそれを選択してたのをIntelliJが覚えてるからで,直前に「HashMap」を選んでると「HashMap」が第一候補になります。こうゆうところはヘンに空気読みますね。
それはそうと,Smart Type Completionのキーマップが「Ctrl+SHIFT+SPACE」とちょっとキー押しすぎなので,私は「SHIFT+SPACE」にリマップしてます。
IntelliJのコード補完はBasic, Smart Type, Classの3種類あるけど,多用してるのはSmart Typeかな。


んで,コンストラクタだっけか?どのコンストラクタ使うかは,こんな感じでパラメタ−情報がポップアップされるんで,それ見ながらタイプを続けますよ(この情報は「View->Parameter Info」でも見れるよ)。


そんでもって,引数の補完か。こっちもSmart Type Completionを使うと,引数の型で絞り込んだ候補だけがでます。


ちなみにBasic Completionの場合はこんな風になる。こんなに違うのでSmart Typeばっか使ってる(正直,IDEA10くらいからBasic Completion使わなくなってるな。なはは...。


あと引数の値が確定したあとも補完は効きますよ。その辺はNetBeansと同じかね。ひとつ注意することは「確定にTABキーを使う事」,Enterキーで確定すると前の値が上書きされず,以下のようになって,ちょっと悲しい思いをする。:-)


この「TABキーで確定すると上書き」ってのを覚えておくと,たまーに便利な時がありますよ。


この辺の基本機能はどのIDEも拮抗してると思うんだけど,実際使ってみるとびみょーな使い勝手の差がありますね。わたしは「どれも一緒じゃん」ってテキトーな事をよく言いますが,IntelliJ以外のIDEを使う気はさらさらないので全然信用できませんよね。:-P


ps.
なんというシンクロニシティ。:-)
NetBeansとEclipseの比較にIntelliJも加えてみた - しおしお