リファクタリングというか

微妙な同僚が書いたコードを自分の好みに修正していた。
というかもともと僕が書いたコードにその同僚がちょっとした機能追加をしたものだったのだが、

  • スタティックフィールドなのに「mHogehoge」のような名前がついている
  • そのmHogehogeに入っているオブジェクトのライフサイクルは、そのクラス(ここではAとする)のインスタンスのライフサイクルと同じになっている。つまりAのオブジェクトを2つ以上作った瞬間にバグる。
  • そのmHogehogeをAのオブジェクトのライフサイクルと直接関係なく動く別のスレッドから使っている

みたいな酷いモノだったので修正した。


たぶん、そこそこちゃんと動く別のサンプル(そこではmHogehogeはstaticじゃなかった)から拾ってきたコードをマージしてがんばってたところ別のスレッドから呼び出さざるを得ない形だったのでとりあえずstaticにしたら動いたのでリリースしたという感じだったのだろう。しかしこれではバグっているとしか、百歩譲って今は無事に動いているとしても将来確実にバグるとしか思えない。


勝手に修正されて彼が気分を悪くするかもしれないとは思ったが、コード見てたらものすごい恐怖感が漂ってきて修正せざるを得なかった。