エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

プログラミングでバグを見つけたら、『なぜ発生するか』を考えよう【969日目】

問題に対して、場当たり的な対応をしない

Aをクリックしたら、Bがおかしくなる!

こうなった時に、何も考えずに、
『Bがおかしくならないようにしよう』

この思考でコードを書く方がいます。 すると、Bにif文が付け足されるわけです

出来れば、
『なんでバグが出たのか』
『バグの原因を断つ』
でコードを見てほしいと思いました。

どうあってほしかったか

今回の想定ケースとしては、
Aのロジックが間違えていたので、本来ありえない値がBに飛ばされたというケースを想定して話しています。

もし、このような問題があったときにBに修正を加えるだけだと良くないと思いました。

なぜ良くないのか

根っこのバグは治ってないので、良くないことが起こります。

1. ロジック自体は問題なので、新たなバグの発生
2. if文によってコードが見にくくなる
3. 問題の関心事以外のコードが増える

正しく捉えるための思考

今回『間違えたこと』をしているのはAなので、Aを修正したいですよね。
でも、問題が起こっているのはBです。
そのためにはどうしたらいいか。

『なんで』バグが起こったのだろう。

これを一瞬でも考えてくれるといいなと思いました。

『なんで』を考えた時に、Bが間違えたロジックを走らせていたなら、Bを直すべきです。
でも、問題が発生したからといって、発生した場所が原因とは限りません。

『なんで』と考えて、コードの流れを一度追ってみましょう。
すると、どこが原因か見つかるかもしれません。

原因を正しく直せば、先程あげた3つの問題も回避されます。
バグを見ると慌てがちですが、一度一呼吸おいて、問題を正しく捉える努力をしましょうφ(・