31日間ReSharper一周 Day 29: インターフェースがらみのリファクタリング
2012-12-30 18:17:12
「31日間ReSharper一周」の29日目にようこそ。
インターフェースを使うのは、昔からかなりいらいらの種だ。テスト可能なコードを書くときには必要で、ファイルシステムに見せかけたヌルオブジェクトを渡すことができる。でもコードが実際にやっていることを追いかけようとするときには辛い。
ReSharperには、インターフェースを使うのをずっと簡単にする機能がいくつかある。2つはもうネタにした。「先祖クラスへナビゲート」と「型階層ビュー」だ。
今日はインターフェースを使うときに便利な機能をもう1つネタにする。「ベースメソッド」プロンプトだ。
メソッドのリファクタリング――たとえばリネーム――をするときに、そのメソッドがインターフェースを満たすためのものなら、ReSharperはそのリファクタリングをインターフェースの方に適用するかどうか聞いてくる。
このダイアログボックスはポンコツ的だ。思考の流れを中断させるし、質問は簡単に理解できるようなものでもない。僕の考えるようには動かない。残念だが、改善案はひとつも思い浮かばない。
そうは言っても、この機能が嫌いなわけではない。メソッドをリネームしようと思ったときに、ReSharperが自動的に割り込んできて、インターフェースもリネームするか聞いてくる。答えは勿論Yes!コードがコンパイル可能に保たれるからだ(時には先に「はい」を押してしまい、その後で「ああー、このメソッドはインターフェースから来てたんだ!」ってなる)。
同じことは「使用箇所の検索」でも当てはまる。インターフェースを実装するメソッドについて「使用箇所の検索」をするなら、「このメソッドを探しますか、それともインターフェースを経由して使う同じメソッドを探しますか?」と聞かれるだろう。この場合、このメソッドの使用箇所を全部知りたければ2回検索しないといけないかもしれない(インターフェース経由での使用箇所だけ知りたいのなら、「はい」と答えて1回検索するだけでいいけれども)。