早期returnは、
関数を読みやすくするための
有効な手段の1つです。
(実は意見が分かれるので深堀りはしませんが)
特に条件がシンプルであれば、
1行内に条件とreturnを書くと非常にすっきり書けます。
しかし、1行に複数の文を詰めてしまうと、
行ヘッダをクリックしても一番手前のものにしか
ブレークポイントが張れません。
そのため、
「デバッグが面倒になる」
と考えて、あえて複数行に書く人もいます。
ところが、VisualStudioでは、
1行に複数文混在していても、
ちゃんとブレークポイントを張る方法が存在します。
本記事ではこのような時に使える
ブレークポイントの張り方について解説します。
カーソルを合わせて「ブレークポイントの挿入」を実行
任意の位置にブレークポイントを張るには、
あまり使わない右クリックメニューである
「ブレークポイントの挿入」
を実行することでできます。
「ブレークポイントの挿入」
は、テキストエディタ上で右クリック→
「ブレークポイント」→「ブレークポイントの挿入」
で実行できます。
この時、
ブレークしたいコンテキスト上で右クリックするのが
ポイントです。
すると、冒頭の画像のように、
行頭をクリックしてブレークを張った時とは、
明らかに違う場所がハイライトされます。
「ブレークポイントを挿入」のショートカットキーは「F9」
便利なのは分かったけど、
毎回右クリックするの面倒過ぎるよ!!
いくら便利でも、
ブレークポイントを張るたびに、
右クリックしてメニューを選ぶのは、
とても大変です。マウスと中指がヘタってしまいます。
実は、ブレークポイントは「F9」キーでも
挿入することができます。
キャレットさえ合わせてF9を押せばいいので、
キーボードだけでブレークポイントの挿入が完結します。
1行にget,setがあるプロパティのセッターのみを止めることも可能
この操作は、1行プロパティのsetのみで
止めたい場合にも活用できます。
同様に、「set;」の部分にキャレットを合わせて、
右クリックメニューから「ブレークポイントの挿入」
を実行するとこの通りです。
値が設定される時だけブレークさせることができるので、
どこから値が書き換えられているか知りたい時に、
非常に重宝します。
三項演算子では使えない
まことに残念ながら、
三項演算子において、
条件に合う方(or合わない方)だけを止める、
といったことはできません…。
三項演算子を使うときは、
ブレークポイントを張った上での
デバッグはしづらくなることを心にとめておきましょう。
1行にラムダ式が混在している場合でも使える
その他、LINQのデバッグにも役立ちますね。
後述しますが、参考記事ではこちらが本題でした。
例えば、Whereに1行のラムダ式を渡すのは、
極めて頻出のコードです。
この場合も、ラムダ式の処理部分にキャレットを合わせて、
「ブレークポイントの挿入」で、
この通りです。
これを知っているか否かで
LINQのデバッグが段違いに捗ります。
まとめ
まとめです。
- 1行内に複数文書くと、
行頭クリックのブレークポイント挿入では
手前の文にしか張れない - キャレットを合わせて「ブレークポイントを挿入」で
任意の文にブレークを張れる - 1行return、1行プロパティ、LINQのデバッグなどで有効
- 三項演算子はこの方法は使えないので
デバッグ時の覚悟が必要
最後までお読みいただきありがとうございました。
参考記事
本記事は以下の記事から着想を得ています。
深く感謝いたします。
コメント