「リファクタリング — プログラムの体質改善テクニック」を読みました。

ずっと積ん読状態だった、Martin Fowlerの「リファクタリング — プログラムの体質改善テクニック」を読みました。

リファクタリング ― プログラムの体質改善テクニック
著者: Martin Fowler
ページ数: 423ページ
出版社: ピアソンエデュケーション
発売日: 2000年5月

久しぶりの技術書だったんですが、感動してしまいました。

あまりにも今までの自分がコードの不吉な匂いによってやる気をそがれていたかということがわかったから。

リファクタリングというのは、プログラムの外部的振る舞いを変えずに(ここがポイント)プログラム内部を改善していくこと。
これがなんの役に立つかというと、プログラムの見通しをよくすることで、バグを減らし機能を追加しやすくなるのです。

プログラミングをしていると、しょっちゅう機能を追加したいのに直線的にできなくていやだなぁとか、一つの関数が長すぎて何をやっているかわからないとか、一時変数が多すぎてプログラムが汚く見えるとか、そういうことにしょっちゅう会うと思います(コードの不吉な匂い)。

Joel SpolskyはJoel on Softwareで次のようなことを書いています。

プログラマがいつでも既存のコードを捨てて最初からやり直したいと思うのには、ちょっとした理由がある。その理由というのは、古いコードがクズだと思っているからだ。そしてここに興味深い観察事実がある。彼らはたぶん間違っている。彼らが古いコードをクズだと思うのは、プログラミングの基本法則のためだ。

プログラムというのは書くのより読むほうが難しい。

Joel Spolsky 『Joel on Software』

Joel on Software
著者: Joel Spolsky
ページ数: 387ページ
出版社: オーム社
発売日: 2005年12月

でも、そういう時にまずはリファクタリングをしてプログラムをきれいにすることで、そういったいやな感じから開放されるのです。

上にも書きましたが、今まで書いてきたプログラムでいやになったのはだいたいそのような不吉な匂いにさいなまれて、にっちもさっちもいかないように思えたときでした(間違えてみっちもさっちもって覚えていた)。

この本はそういう場合にどうしたらいいの?ということを懇切丁寧に、たくさんの場合にわけて書いてくれています。
その一つ一つがプログラミングをしたことのある人なら、あるある!と共感する内容です。
そして、どのような場合に適用すればいいかだけではなくて、きちんと哲学が書かれている、こういう意図があってこうすべきだということがしっかり書かれているのが大事です。

そしてこの本のもう一つの重要な側面。
それは、こんな書き方もあるんだよ!という視点、発想を教えてくれること。
自分はこれに感動したのです。

いくつかの技術書を読んでいてもあまり他人様のコードを読んだことがない自分なので、発想が乏しいと感じていました。
それが少しこの本で補われたような気がして、とても嬉しい。

この本に書かれているリファクタリングのカタログを血肉にして、少しでもきれいなプログラムを書きたいところです。

実際にリファクタリングをやってみましたが(といってもテストケースを使っていないというえせリファクタリング)、非常に楽しい。