31日間ReSharper一周 ... それIDEAでもできるよ(その6)

Day 14: たとえばこんな変数名(http://matarillo.com/resharper/day14.php

Ctrl+SPACEによる変数名の提案。この機能もJavaIDEにとっては,今や珍しくもなんともない機能の一つだろう。たとえば,「StringBuffer |」と入力*1して,Ctrl+SPACEを押せば,

buffer
stringBuffer
sb

くらいは候補に出てくるだろう。一応,IDEAの他にもEclipse3.2,NetBeans6.0M9(残念だけど,5.5系はできない),JDeveloper10gで試して,JDeveloper以外は変数名を提案してくれた。
NetBeansユーザは6.0まで,もうしばらくガマンしよう。


IDEAはもちろん,EclipseNetBeansともども,ReSharper2.5.1みたいなしょっぱいバグはない。だから,「StringBuffer leftRight|」と入力して,Ctrl+SPACEを押せば,ちゃんと

leftRightBuffer
leftRightStringBuffer

と提案してくれる。


これだけだと,「それIDEA」じゃなくて「それJavaIDE」になっちゃうんで,ちょっとだけIDEAの自慢をさせてくれ。
実は,このネタ書くまで明確に意識していなかったんだが,どうもIDEAは最近使った変数名を学習して提案してるみたいなんだ。ためしに,新しいプロジェクトを作り,1つだけクラスを作って適当な型の変数名を提案させてみた。
下図が,その結果。


うん,確かにどの変数名も心当たりがある。さらにエライのが闇雲に今まで使った変数名を提案するんじゃなく,ちゃんと型ごとに分類してくれてるじゃないか。
こうゆう目立たんところをきちっとこなすのが,なんともIDEAらしいなぁ。


あと面白いところで,引数の提案ってのもある。ちょっと例があからさまなだけど,こんなヤツ。


辞書順からすれば,最初に提案されるのは「alfa」であるべきなんだが,メソッド定義部に記述している引数名にマッチする「charlie」を最初に提案してくれる。
これ完全マッチじゃなくても提案にひっかかるみたいなんだが,極力それっぽい変数名にしておいたほうが良いっていう気にさせてくれる(メソッド定義するときも,安易な変数名付けなくなるしね)。

*1:'|'はカーソル位置