matarillo.com

The best days are ahead of us.

31日間ReSharper一周 Day 24: フィールドの導入

2012-12-30 18:17:12

元記事

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

昨日はReSharperの「変数の導入」リファクタリングについて話した。今日は「フィールドの導入」だ。

フィールドの追加は変数の追加にかなり似ているが、オプションが追加されている。

ここでは通常の変数名提案(ReSharper Optionsで指定した命名規約に従うもの)が動作する。

「局所変数の導入」と同じく、これも「式を全て置換する」チェックボックスを持ってる。ただ「フィールドの導入」はクラス全体に影響するから、青いハイライトやカラーバーの青い縞は式がいくつ置換されるのかを見る上でもっと便利になった(まあそれらが消えないっていう事実には相変わらず腹立つけど)。

「キャンセル」が文字通りの「キャンセル」ではなく「すべてハイライトさせる」として使われてるというまぬけなふるまいは「フィールドの導入」にもある。本当の「キャンセル」をしたければ、「キャンセル」をクリックした後にEscを押さないといけない(そしてもし本当の「OK」をしたければ、「OK」をクリックした後にEscを押さないといけない。ぎゃぼー)。

基本設定については特に言うことはない。オプションは見るだけでよく分かる。

テストコードを書くには

もしテストコードを書くなら、「××内で初期化する」系のオプションはテストクラスでは1つも使わないほうがましだと気づくはずだ。「現在のメンバー」が便利な時もあるかもしれないが、期待するようなものではないことが普通だ。(私見だが、「コンストラクタ」や「フィールド宣言」は、[TestFixture]付きクラスを書いているときには使用可能にするべきですらないと思う。テスト間の依存性をむざむざ与えてしまうことになる。)

「[SetUp]メソッド内で初期化」を付け加えるように、ReSharperに機能要求を送ったんだが、プラグインとして実装できるからと言われ、「修正しません」としてクローズされてしまった。もしそれが正しいなら、ReSharperプラグインAPIのドキュメント化を続行するという長い道のりを歩き出しているってことになるぞ。だってリファクタリングのサンプルなんてひとつも無いわけだから。書く予定があるとはビタイチ見えない。リファクタリングについては1節だってない。そういうことだから、もし誰かが、既存のダイアログボックスにラジオボタンの選択肢を追加して、その新しい選択肢は既存のリファクタリングの動作を変更するために使う、そんなReSharperプラグインを書こうと思っているならば、最大級の幸運が今すぐ訪れますようにと祈るだけだ。

これで世界の終わりってわけじゃない。「フィールドの導入」はそれでも適切に使える。ReSharperのほとんどの部分ほど良くは無い。手でSetUpメソッドのところまでスクロールしたりとか、そういったことをしないといけない。(にっこり)

もしテストクラスで「フィールドの導入」を使いたいのなら、うまくいくようにする方法は次の通りだ。もしもプラグイン用ドキュメント作成が回避されるんでなければ、それまではね。

  1. 「フィールドの導入」を使い、「現在のメンバー」を選ぶ。
  2. ReSharperが今生成した割り当て命令をカットして、[SetUp]メソッドにペーストする。

実際はそんなに大変じゃない。ただいらいらするだけだ。全てがとても簡単になったのに慣れてしまった。だから、いつもやってることを取り上げられて、簡単にするべきなのにきっぱり断られたりすると、がっくりする。


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