僕はプログラマでありたいよ

こんにちはあたらしいじぶん

【読了】Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

むかーし、読んだ本をお昼の読書タイムを利用してもう一度読んだ。

なぜこの本を選んだのか

  1. 前の本を読み終わって、次に読む本がなかったので、手頃そうな本を探したらこの本が見つかった
  2. コーディング、設計能力の伸び悩みを感じていた
  3. 感覚になっていたリファクタリングをもう一度体系立てて学びたい

1はただのトリガーで、2,3は前々からなんとなく頭の片隅で思っていたことだったのでせっかくだから読みました。結構古い本なのだけど(初版は2007年!)、この手の話は、基本的には昔から考え方は変わらないから今読んでも全然ためになると思う。あと、実はリファクタリングRubyエディション(既読)と悩んだんだけど、リファクタリングRubyエディションはRubyだから書けるやり方だったりRubyだから綺麗になるリファクタリングも多かった気がする?ので、普段使っているPHPに活かしやすいほうがいいなと思って、こっちを選んだ。(そういえばPHPがメインのリファクタリング本って見たことないですね!)

どこがよかったか

リファクタリング本は大抵言えることなんだけど、流れとしては、手法の説明、例題のビフォーアフター、アフターにするためのプロセスを各手法について説明していく。良かったところは以下。

  • よく使いそうな手法をピックアップ
  • ビフォーアフターと過程のクラス図
  • 手法のメリット、デメリット
よく使いそうな手法をピックアップ

リファクタリングの手法は星の数ほどあるけど、よく出くわしそうな場面で使えるものを重点的に説明している。僕のような3歩歩くと忘れてしまう鳥頭にはうってつけ。ちなみにその他の手法は巻末の付録でカタログとして掻い摘んで書かれているので、それはそれで助かるんだと思う。

ビフォーアフターと過程のクラス図

コードで書かれるより絵のほうがわかりやすい事多いですよね。リファクタリング本は大抵クラス図で説明してくれるので、この本も多分に漏れずそのやり方を踏襲しているんだけど、ちょっと複雑な手順の手法に対してはその過程のクラス図を書いてくれているので、過程をイメージしやすい。リファクタリングは最終的にどうなるとよいかってことよりも過程が大切だったりするので。もちろん最終形も重要。

手法のメリット、デメリット

デメリットが書いてあることが精神衛生上良い。こうするといいよ!っていう内容で、これが正義!っぽく書かれてしまうと、僕のような三下エンジニアには、心のなかで芽生えた疑問が握りつぶされてしまうので、素直にデメリットを書かれると、やっぱりそう思うよね!みたいな自信に繋がって地味に嬉しかったりするのです。あとは、自分の中でコレがいいと思って信じて疑わなかった事に、新たな発見を与えてくれる。良い事よりは悪いことのほうが発見感が強いと思う。

まとめ

個人的にあると嬉しいと思ったところは、テストについても触れてあると尚わかり易かったかもしれない。リファクタリング->コンパイル->リファクタリング...ではなくて、リファクタリング->テスト->リファクタリング...の流れがLLの多い僕的にはしっくりくるし、リファクタリング、テスト、デザインパターンは切っても切れないものだと思っているので。

とはいえ、この類の本は、進歩の激しいこの業界でいつ読んでも勉強になるので長く使える。あと、それでもやっぱり忘れてしまうので、定期的に読みなおそうと心と星に誓った。