私がプログラミングで最も楽しいと思える作業 = リファクタリング

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (312件) を見る
この本はデザインパターンなどの本と似ていて、一見書かれている内容は当たり前過ぎて無価値なことのように思ってしまう人もいるのですが、リファクタリングとは「外部の仕様を変更せずにプログラムの設計を改善すること」と定義しており、単体試験の実行なども含めて体系的にプログラムの設計を改善する手順を示しているという点で非常に画期的な内容の本だと思います。また、プログラミングしながら設計を考えるという考え方を世の中に広めることになった本だ思います。
ちなみに、私は10年以上も前にこの本に出会うまで、もちろんリファクタリングという用語は知らなかったのですが、分かりやすく無駄のないプログラムの作成を心がけるということで、無意識のうちにリファクタリングもどきな作業を実施していたということはありますね。プログラミングの魅力については、プログラマーによってさまざまな考え方があると思いますが、少なくとも私がプログラミングで最も魅力的と考えているのがこのリファクタリングという作業ですね。リファクタリングというものが世の中になかったら、きっとプログラマーになっていなかったと断言できますね。*1プログラムの外部仕様は変えないということなので、もちろんいくらリファクタリングしてもその時点ではプログラムでできることには変化がないのですが、リファクタリングによって無駄なコードが劇的に(場合によっては10分の1になることも)減るというところはまるでパズルゲームを解いているように本当に楽しいものです。しかも、コードが単純になることでそのプログラムのメンテナンス性や拡張性が飛躍的に高まるということですから、既存プログラムに新たな生命を吹き込んでいるような感覚も覚えます。その他
- 使われていない隠れたデッドコードを発見して消し去った瞬間
- スパゲッティコードを徐々に解きほぐしながら、その意味するところを理解できた瞬間
- 創造神とも言うべき巨大なクラスを責務ごとに分割し終えた瞬間
などを一度でも体験するとほんとうに中毒になってしまいますね。(難しいリファクタリングを上手くやり遂げた瞬間の気持ちはRPGのダンジョンで目的の宝箱をやっと手に入れた時の感動にも似ているかもしれません。)私自身は仕事ではコーディングする機会自体が最近はあまり多くないですし、自由にリファクタリングができるという幸運を味わえるのは時間の割合から言うと全体の仕事の5%もないくらいですが、わざわざそのためにこの職業を続けているというようなものです。プログラミングのこんなに面白い側面を知らないで、いやいや仕事として作業するなんて実にもったいないことですよ。
もちろん、インターフェースの変更やクラス階層の変更など大きなリファクタリングはPG個人の判断でできないので、アーキテクトが中心となって目標を立て計画的に行う必要がありますし、リリースタイミングなどによりリファクタリングが危険ということもあります。ただし、privateメソッドの抽出やローカル変数の名称変更などはもっと現場で積極的に取り入れていくとよいと思いますね。
なお、私はまだ読んでいませんが、最近になってRubyのリファクタリングの本も出ているようですね。

- 作者: Jay Fields,Shane Harvie,Martin Fowler,Kent Beck,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/02/27
- メディア: 大型本
- 購入: 9人 クリック: 321回
- この商品を含むブログ (49件) を見る