バグとの闘い

自分の機能でバグが出た。問題のありそうな場所はおおよそ掴めてはいるのだが、そのためには色々と直さなければいけないところがあって面倒くさそう。
バグに手をつけるのが嫌なので、既存部分のリファクタリングに勤しむことにする。あ、逃げているわけじゃないんですって。何となく美しくない部分があって、そこが心の隅に引っかかっていたので、この機会にやっておくことにした。断じてバグから目を背けたわけじゃないんですよ。
この部分にはユニットテストを作っておいたので、テストケースを少々作り替えてからリファクタリングに臨みます。ユニットテストがあるので自信を持ってソースを変更できます。結構メンバー変数を削除しまくったり、ロジックを変えまくったりしたのですが、テストを通過したので正しく修正できたことでしょう。ソースもかなりきれいになりました。変なフラグもなくなって、無理のないソースになりましたし。
で、リファクタリングが成功したので気分が良くなったところで件のバグに取りかかろうとしたところ、...直っていました。リファクタリングで修正する前の無理のある処理が影響していたみたい。あぁ良かった。先にバグを対処していたら、ヤブ医者の対症療法をしてしまうところだった。
ソースの危険なニオイを嗅ぎ取れたということで、自分の感覚も衰えていないかもと見直したり。まだまだ全盛期を過ぎちゃいませんぜ。