06-リファクタリングの際に注意すべきこと

プログラマが知るべき97のこと」の6つ目のエピソードは、リファクタリングに関する話です。とはいっても、実装中の細かいサイクルのリファクタリングの話ではなく、前のリリースのコードに手をいれて良くしようといったスコープのリファクタリングの話になります。故意の技術的負債であるならばリファクタリングは当然のように思えますが、本当に必要かどうかちょっとだけ考えてみましょう。
自分がリファクタリングに出会ったのは実務でJavaのコードを書き始めて暫くした頃でした。思うようなコードが書けない・人のコードが読みにくくて仕方がないといった、それまでかかえていたストレスを解決する糸口を与えてくれたのが、リファクタリングとEffective Javaの2冊です。しかし、本当のリファクタリングが出来るようになってきたのはごく最近です。
このエピソードでは、リファクタリングの注意点として「本当に行う価値があるかを検討しよう」という事が書かれています。エゴだけのリファクタリングや新しい技を試すためにリファクタリングをしてはなりません。人間なのでミスをする事もあるのです。より良くなるというのは、勝手な思い込みの可能性もあるのです。
また、リファクタリングを行う為には十分に効果的な単体テストが実施されているのが大前提です。しかし、効果的な単体テストを行うには適切な設計が不可欠になっています。したがって、リファクタリングを行って前リリースのコードを改修可能であれば、そこそこの質で実装されているとも言えます。早くこのエピソードにあるような悩みをかかえたいと切実に思いました。そのためにはやはり息を吐くように単体テストをする文化を作る必要がありそうです。

プログラマが知るべき97のこと

プログラマが知るべき97のこと