matarillo.com

The best days are ahead of us.

31日間ReSharper一周 Day 21: Alt+Enterでコード変形

2012-12-30 18:17:12

元記事

31日間ReSharper一周」の21日目にようこそ。今日はAlt+Enterネタのまとめだ。

Alt+Enterでコードを修正して、エラーや警告を無くす方法はすでに説明した。赤い電球が表示され、Alt+Enterを押せば応急処置を表示できる。

任意の応急処置もある――コードに適用することもできるけど、しなくてもいい。単にみんながよくやることだから、ちょっと便利なようにReSharperが自動化してくれる。

任意の応急処置は、黄色の電球で表示される。

それらはちょっと見つけにくいかもしれない。カーソルを適切な場所に置かないといけないからだ。エラーや警告の応急処置についてもそうなんだけど、そっちは適用できる場所を見つけられる。赤や灰色や波線だ。それにF12で次の場所に移動できる。任意の応急処置については、カーソルを適切な場所に置いて0.5秒ほど待たないと、手がかりが見えるようにならない。それに次の場所に移動するキーストロークもない。まさに、(a)すでにそれらが存在することを知っているか、そうでなければ(b)偶然見つけるか、どちらかでないといけない。

だから今僕が何個かネタにする。何を探せばいいかわかるようにね。

使っていない中かっこを取り除く

複数の文を含んでいるので中かっこを持っているifブロックがあると思ってほしい。そこからコードを修正してコードが1行になったので、中かっこはもう不要になった。

カーソルの置き場所: 開き中かっこまたは閉じ中かっこの所(直前でも直後でも可)。

if文中の不要なかっこを取り除く、ReSharperの任意応急処置

可視性の変更

カーソルをprivateやprotectedやinternalやpublicキーワードの上に置くと、黄色の電球が表示される。Alt+Enterを押せば、その可視性を変更できる。タイピングの節約にはあまりならないけど、時々便利だ。

カーソルの置き場所: 可視性キーワード内ならどこでも可。

メンバの可視性を変更する、ReSharperの任意応急処置

変数と割り当ての分離

もしある変数が宣言の一部で値を割り当てられていて、値の割り当てを条件つきにするとかそんな類のことをしたくなったなら、「変数と割り当ての分離」を使って、値の割り当てを別の文にすばやく分割できる。

カーソルの置き場所: 変数名の上か、または’=‘記号の上。

変数宣言と値の割り当てを分割する、ReSharperの任意応急処置

変数と割当ての結合

逆の変形も有効だ。「変数と割当ての結合」は変数宣言を、最初に値が割り当てられている行に移動する。

カーソルの置き場所: 変数が最初に値を割り当てられる行の、変数名の上か、または’=‘記号の上。

変数宣言と値の最初の割り当てを結合する、ReSharperの任意応急処置

変形の後は下のような見かけになる。注意してほしいのは、宣言が割り当てのところまで下がっているのであって、割り当てが宣言のところまで上がっているわけではないことだ。だからコードの順序依存性が壊れることはない。

変数宣言と値の最初の割り当てを結合する、ReSharperの任意応急処置を適用した後

Ifの反転

これはお気に入りだ。これは単純にif文の条件式を反転させ、"if"と"else"のブロックを入れ替える。純粋に表面的な変更であり、コードの実際の動きには全く影響しない。

カーソルの置き場所: ifキーワードの上。

かなり予想がつくだろうから、つまらない実例は出さない。でもこれは単純に条件式およびブロックを反転させるよりはすこし賢い。どうしてお気に入りなのかは、下の例を見てほしい。

メソッド全体に広がるif文。ReSharperが改善できるコード。

こういうことは時々起きる。メソッド全体にif文が広がっているわけだ。「Ifの反転」をするとこうなる。

ReSharperがメソッド全体にわたるif文を反転させた後

if文がメソッドの最後にあることを判別し、することがなければ、早くメソッドから出て行くようなreturn文を生成する。大きいコードブロックのインデントレベルがひとつ減り、メソッドのコード行もひとつ減る。すごい!


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