ReSharperユーザの独り言 その4(だと思う)

色々な所からプッシュのあったReSharperの正規ユーザになって一ヶ月、もうすっかりはまってしまって、これ無しではコードを書きたくないという程になっている。恐らく私にプッシュした方々もそうなのだろう。

人によって違うだろうが、私にとって特に手放せない機能は以下の通りだ。

nUnit Testing

以前に書いたので説明は割愛する。version2.0.1で日本語メソッドが「予期しないトークン」扱いではなくなり、普通に使えるようになった。また、同社の.NET用プロファイラである.dotTraceと統合されており、テストメソッドのプロファイリングを行うことが可能になっている。

・Optimize Usings

usingキーワードの最適化機能。ソースコード中で使われているネームスペースを調べて、足りないusingを追加/余計なusingを除去してくれる。
以前も書いたが、この機能で秀逸なのは未解決なキーワードを入力すると、即座に「解決できてない、usingを追加するか?」と促され、これに応えると瞬間にusingキーワードがソースコードの先頭に追加されて解決が完了する(Quick-Fixes)。
警告だけでも有難いのに、ソースコードの先頭に戻らなくて良いのがなんと楽なことか。


・UnResolve Symbol Marking

上と関連するが、ソースコード中で未解決のシンボルは赤くマークされて表示される。
赤くマークされたシンボルがソースコード中であれば、ビルドが通らないし、コメント中であれば、引数パラメタ名とコメントが一致していないのかもしれない。
色が変わっているだけだろうというが、ソースコードを流し見しているだけでミスが解ることが、そろそろ鈍くなってきた私の脳にはどれだけ有難いか。


・Implement/Override Members Wizard

インタフェースや抽象クラスの実装に必要なコードを、自動的に生成する機能。
C#にはJava Beansというクラスの規格は無いのだが、それでも単純なデータの入れ物として扱うクラスの実装はJavaBeans同様に、大量のメンバを単に実装する作業だ。
.NETに開発の主を移したときに、この機能がなぜVisual Studioには無いのだろう、と思ったものだ。細かい点だが、インタフェースの実装コードが、途中からでもきちんとインタフェースの定義順に挿入されるのが有難い。また、メンバ変数も自動的に生成できる(無論、生成しない選択もできる)

このようにReSharperは素晴らしいのだが、逆説で言うと、全てVisual Studioに足りない思う機能だ。

今回紹介した、ReSharperの機能が効果的だと感じる理由の一つは、Visual C++(と比べるのもおかしいが)よりかはずっと速くなったとはいえ、相変わらずVisual Studioのビルドがかなり重く、時間のかかる処理だからだろう。
Javaの差分ビルドをサポートしているIDEでは差分ビルドは大抵はバックグラウンドで動くし、自動的にビルドがかかったりするので、(これを嫌う人もいるが)ビルドによる作業の中断をあまり意識せずに済むが、Visual Studioではそうはいかない。
ビルドの回数はできるだけ減らしたい、ビルドエラーの手戻りを無くしたいわけで、それにはビルドの事前に潰せるエラーは全て潰して置きたいのだ。