リファクタリングに泣いた日 | 俺の夢ってなんだったけorz…  的な

俺の夢ってなんだったけorz…  的な

タダの日記なんだからね!!

今日はリファクタリングに泣いた日だったかもしれない。

今日は修正したコードのテストを行っていた。
そこで、エラーは発生しなかったので、コミットしようということになった。

コミットする時は必ず立ち合いが必要となる。
そこで、有識者を呼んで、コードの説明とコミットをお願いしたら、指摘が入ったのだ。

このコード、元あったものの修正なのだが、これが酷い。冗長すぎる作りだったのだ。
そんなことはよくある話、無視して自分の部分の修正だけしようと思ったのだが、自分の修正を入れるために必ずif文を使う必要があったのだ。

しかし、if文を1つ入れるだけで、すでに4つのネストを使っており、5つ目のネストとなることでコーディング規約に違反してしまう。

もちろん、ただ単にクソなコードなだけで、ここまでネストは必要ない。

そこで、俺はコーディング規約に違反しない程度ですむように、軽くリファクタリングしたのだ。
メチャクチャ構造を変えてしまうと、動作の保証が取れないかなとも思ったし、ちょっと面倒だった。

あまりに面倒で、正直触りたくないから、新規クラス作ってはダメか?と聞いたら、新規クラスは開発のコストがかかるから、できればやりたくないということで見送られた。
ただのクラスだったら余裕なのだが、設定パラメータを追加する必要があるクラスというのは確かにコストがかかる。
リリースする時に色々とする作業が増えるからだ。

で、多少リファクタリングをしたコードでレビューを依頼したのだけど、すんなり通り、まぁ自分でも大丈夫だという予想はあったので、そこではあまり気にしなかった。

このクラスは主に入力チェックの役割を果たすクラスだった。
そこで、まったくメンテしてないjUnitのクラスをやはり自分の担当だからということでメンテして、リファクタリングした部分についても問題ないことを確認した。
何で、他人の作った部分のテストもしなければならんのだと思いつつ、テストケースを追加した。

これが後に吉と出るのだが。

そして、結合テストをして、問題なかったので、コミットをお願いしたらダメと言われたのだ。
ダメな理由はリファクタリングが甘いということだった。
ここもっとすっきりするよね?これを聞いて、正直マジかよと思った。
ああ、その通りだ。まだまだリファクタリングできる。
そこで、一旦、分かりました。といってコミッターを席に戻し、構造は変えないまま、出来る限りのリファクタリングを行った。

結果1/3のコードは削れただろう。
いや、本当なら構造自体を変えていいのなら1/2にすることだって出来るクラスだった。
運がいいことに、テストクラスを作っていたので、テストクラスを実行して、軽く動作確認で問題のないことは証明できた。

再度、コミッターを呼んで説明すると、まぁそこまでやればいいだろうということで、コミット出来た。
きっついなー、というのが本音。
俺が作ったところ以外のテストケースを書いて、俺が作ったところ以外をリファクタリングして。

何で、俺が。

やっぱり、他人の作ったコードはロクなことがない。

SIerは免許制にして欲しい。

クズのようなコードしかかけない奴は、俺と関わらないでほしい。

コードの良し悪し、アーキテクチャー的には俺も突っ込みどころ満載だろう、でも、ぱっと見て、そのコード半分にできるよな?って思えるようなコードを書く奴はこの業界から早く退場して欲しい。

急いでる時は余裕ないよ、ほんと。。

リファクタリング全開じゃないとコミット出来ないのか。。。
勉強になった。