matarillo.com

The best days are ahead of us.

31日間ReSharper一周 Day 1: 灰色と赤と波下線

2012-12-30 18:17:12

元記事

31日間ReSharper一周」の1番目へようこそ。最初の数回では、開封直後に経験することの概要を説明する。インストール後に最初に気付くことだ。

最初の2日間は光りものについてだ。そして3日目は重要で、「ReSharperサバイバルガイド、あるいは、僕のキーバインドを知りませんか?」だ。その後は光りものに戻る。

さて、君は今まさにReSharperをインストールし終わって、Visual Studioでソリューションを開いたところだ。たぶん君が最初に気づくのは全部、灰色の所だろう。

ReSharperには赤と波線もあるけど、たぶんその時点ではそれらを見てないだろう。でもすごいぞ。コーディングを始めれば嫌でも見る。

最初に見るのは灰色だけど、まずは波線と赤について説明しよう。灰色は最後にする。そっちの方がすごいからだ。

最初の数日間はReSharperの概要でしかないから、何度も「後で説明する」って言うと思う。今のところは、最初に見るものの様子を伝えようとしているんで、徹底的なガイドブックではない。ディープなとこは後で。

赤と波線: リアルタイムなコンパイルエラー

コンパイルできないコードがあれば、ReSharperは赤、または波下線でそれを示す。

「はいはい、スゴススゴス」って思うかな。「波線はVisual Studioにもあるぞヴォケ。」まあね。でも、Visual Studioはコンパイル後にしか波線を出さない。ReSharperはリアルタイムで、つまり文字を打つだけでコンパイルエラーを指摘する。この魔法は完全にバックグラウンドで動く。

エラーメッセージを見るには、マウスを赤または波下線の上に動かせばいい(ツールチップが表示される)。それか、カーソルキーを使ってカーソルを赤または波下線のところに置く(エラーは、ステータスバーに表示される)。

赤と波下線の違い: 赤は識別子――クラス名、メソッド名、変数名など――が見つからないときだけだ。その他全部のコンパイルエラーは波下線で示される。識別子だけ表示法が違うのは、ReSharperにはそれらを修正する専用の機能があるからだ。

赤については後の記事で扱う。すばらしい十徳ナイフであるAlt+Enterについての記事だ。

灰色: 死にコードを見つける

2、3年前、僕らのコードベースには一度も使われなかった関数がいっぱいあった。でも、「いつか使うかもしれない」ので削除できずにいた。まるっと使われなかった部分もあった。コメントアウトしたコードもあったが、何年もコメントアウトされたままで、消すのが怖かった。

僕らはもうYAGNI原則ヲ抱擁シテいる――未使用のコードを見つけたら有無を言わさず削除するという意味で。僕らがReSharperの「灰色」機能(ドキュメントには「警告」と書いてあるけど)が好きな理由だ。

ReSharperは必要でないコードを見つけ、灰色で表示する。

実際には不要な名前空間の"using"。使わない変数。使わない引数。未使用のプライベートメソッド、プロパティ、フィールド。不要な限定子(“this"とか"Some.Namespace"とか)。書き換えたあと一度も読み出されない変数。継承元を呼ぶだけのオーバーライド。すべてが灰色になり、たぶん安全に削除できる。しかもね、繰り返すけど、リアルタイムに表示されるんだ。

もちろんルールは設定可能だ。会社のコーディング規約で「this」を使わないといけないのなら、ReSharperのその警告を無効にできる。オプション設定はReSharperメニュー > Options > Highlighting にある。

また、ReSharperには、警告部分を修正するのを助けるツールがある。修正機能の大部分は2ストロークキーで、片方はEnterだ。もう一度言うけど、今月中に後で扱う。その時はソリューションエクスプローラーでのCtrl+Alt+F、Alt+Enter、そしてコンテキストメニューを取り上げる。

この機能をさらに進めて、使わないものを全部明示してほしいと思う人もいるかもしれない――たとえpublicであったとしても、ソリューションのどこからも使われていないのであれば灰色にしてほしいと。(もちろん、それは全員のための機能ではないだろう。ライブラリ開発者はそんな機能はいらないだろうし。僕らは商用アプリケーションを開発するんで、とても気に入るかも。)悲しいかな、自動的にこれをする方法はない。哀れみたまえ。(近い機能ならある。安全な削除だ。その通り、今月中に後で扱う。)

色つきコーディングには驚くほど速く慣れてしまう。今となっては、僕らがDelphiで開発していて、引数が使われてないのに気付いたときは、ふざけるだろうね。「あ、灰色だ。じゃあ早速Alt+Enterをたたいて……」


31日間ReSharper一周 インデックスへ戻る