matarillo.com

The best days are ahead of us.

31日間ReSharper一周 Day 9: パラメータ情報

2012-12-30 18:17:12

元記事

31日間ReSharper一周」の9日目にようこそ。

昨日はとあるVisual Studioの機能(すべての参照の検索)をReSharperが置き換え、強化し、キーストロークを変更したってことを話した。今日はもうひとつそんな話をしよう。パラメータ情報だ。以前はCtrl+Shift+Spaceだった。

ReSharperのパラメータ情報(Ctrl+Pでアクセスできる)は、全てのオーバーロードを一度に表示する。Visual Studioみたいに1つだけではない。

Visual Studioのパラメータ情報

Visual Studioのパラメータ情報

ReSharperのパラメータ情報

ReSharperのパラメータ情報(クリックで拡大)

呼び出したいメソッドがオーバーロードを持ってなければ、ReSharperのパラメータ情報はVisual Studioのものとかなり似ている。でも、オーバーロードされたメソッドを呼ぶのなら(たとえば、マイクロソフトが提供しているアセンブリに含まれる何かを使うなら)、新しいパラメータ情報にははっきりとしたメリットがいくつかある。

  • どこに向かえばいいのかわかる。.NETでカスタムペイントコードを書こうとするなら、死のオーバーロードに直面する羽目になる。マジで、どぉなっちゃってんだよSystem.Drawing。オーバーロードを30種類持ってるメソッドだってある。ImageAttributesを引数にとるオーバーロードが必要だとわかっているような時は(そしてそれは結局、全オーバーロード一覧の一番下にあるんだな)、たくさんのオーバーロードを一度に見ることができると助かる。
  • カーソルキーが使える! Visual Studioのパラメータ情報ツールチップが表示されているときは上下カーソルキーを使うことができない―― VSはキー入力を横取りして、「次の/前のオーバーロードについてのパラメータ情報を表示」する。おかげで僕は、次の行へ移動したい時に「End」と「右矢印」を順番に押す癖をつけないといけなかった (「Esc」と「下矢印」でもいいけど、こっちだと距離が遠いんだよね……)。しかしReSharperでは、オーバーロードの選択をぐるぐると切り替える時には、上下キーではなくCtrl+PとCtrl+Shift+Pを使う。だから、カーソルキーは実際にコードの中の移動に使える。ああよかった!
  • 適用できないものをスキップする。Ctrl+PやCtrl+Shift+Pでオーバーロードの選択をぐるぐる切り替えると、入力してある引数に一致するオーバーロードだけを移動する。たとえば上のコードでは、僕はGraphics.DrawImageを呼ぼうとしているけれど、引数にImageとintを渡している。ここでもう一度Ctrl+Pを押せば、一覧における次のオーバーロードは第2引数としてRectangleをとるから、これは飛ばされる――引数にRectangleを渡していないから、望みのものでないのは明らかだ。その代わり、一覧を2つ下がって、次のfloatを引数にとるオーバーロードに移動する。

公式Webサイトによれば、ReSharperのパラメータ情報では、適用できないオーバーロードが灰色で表示されるはずだ。残念だがReSharper 2.5.1ではこの機能は動かない。(このことはサポートに伝えた。そしたら、動く はずですが と言われた。今は調査中らしい。)


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