「レガシーコード改善ガイド」を読んでいる。素晴らしい本だと思う*1。読み始めてすぐに、感動して勢いに任せて書いた感想文があって、あまりに褒めすぎなのでちょっとどうかなと思って公開してなかったんだけど、半分くらい読んで評価は揺るがないと確信したので公開する。
レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (157件) を見る
のっけから「レガシーコードとはテストのないコードである」という過激な主張で始まる本書は、とっつきにくい印象を持たれてしまうかもしれない。しかし、本書は「愛」で成り立っていると僕は思う。著者から全ての開発者へ捧げられる深い愛情が随所から読み取れる。
著者は長年にわたりコンサルティングやトレーニングを行ってきた。自分自身がレガシーコードと向き合うのみならず、レガシーコードに苦しめられている現場の開発者とも仕事を通じて深く関わってきたからこそ、彼らを救いたい、仕事と人生をよりよいものにする手伝いをしたいと思うようになったのだろう。
本書ほど実践的な本を僕は知らない。入門書にせよリファレンスマニュアルにせよ、広義でのツールの使い方を説明しているに過ぎない。いくら読んでも、開発者が仕事を進める上でどのように考えてコードを書いていけば良いのか、その思考の過程をひもとく類のものではない。
本書は真逆だ。あるコードを変更するとき、どこから手をつけていくか、どういうプランで変更を試みるか、そしてその変更の正しさをどうやって担保するのか。開発者なら誰もが自然と、しかし手探りで身につけてきたその思考法を文章として書き下ろしたのが本書の最大の特徴だと思う。
本書はテストの本だが、同時にリファクタリングの本でもある。そしてリファクタリングの本であるということは、コーディングの思考法についての本でもあると思う。他人の脳みその中を直接覗くことはできないから、ある開発者がどんなことを考えながらコードを書いているのかを知る方法もない ー 本書を読まないのだとしたら。
本書にはレガシーコードへ取り組むパターンが数多く載っている。それはつまり、コーディングの思考法も数多く載っているということだ。思考法を身につけるのは時間がかかる、という意見には多くの開発者が同意するだろう。それは単に、良い教科書が無かったからなのだと本書は気づかせてくれる。長年の経験から学び、蓄積するのと同じかそれ以上のものが、本書を読めばせいぜい数日で手に入るのだから、読まない手はない。
*1:ちゃんと勉強している人には「2010年にもなってお前はまだそんなところにいるのか」と呆れられてしまいそうだが http://d.hatena.ne.jp/voicetrek/20090919/1267421179