レガシーコード実践ガイド読み終わり

今週始めには読み終わって、ちょっと復習したり。


読みごたえのある一冊。
予想を超えた内容でした。


保護して変更するというのが大前提の内容ですが、(おすすめはしませんが)レガシーコードをいじり続けるぞ!という方にも一読の価値アリ。
というのは、私が会社勤めをしていてまだ新人だったときは、TDDはもうあったのか、でもまだ全然メジャーではなくという時代。
それはもうレガシーコードを書きまくっていたころの話で、
この本に出てくるテクニックを知らず知らずに使ってたので、いかに既存コードに影響を及ぼさず(テストなしで)変更をするかという観点からも役立つと思います。
ちなみに私が当時使ったテクニックはスプラウトメソッド。
C++のコードだったんだけども、クラスが1つ。関数一つ。変数はすべてメンバ変数という恐ろしいコードの改修をするときに使いました。
そのときの改修は全部で5個くらいあったんだけども、ほとんどがパラメータに付加するような内容だったので、必要な箇所にメソッド呼び出し+必要なメンバ変数を引数渡しする形で、完全隔離。
テストは手動でやりましたが、バグも無く対応できました。


この手のやり方は、プログラマを長いこと続けてきた方には、ある程度潜在知識としてあるんじゃないかと思いますが、リファクタリング同様、カタログとして一冊にまとまっているのでいい。


はぁ〜なるほど!と思ったのは、ラップメソッドや、インターフェイスの抽出で、もともとあるメソッド、クラスの中身を新しく作ったメソッド、クラスに移して・・・というやり方。


インターフェイスの抽出は、他の本だと、Employeeクラスのインターフェイスを抽出して、IEmployeeを作りますというやり方の方が多い気がします。
このやり方は、Employeeをインターフェイスにしてしまうという発想の逆転。
勉強になりました。


あげればきりがないので、この辺にしておきますが、
クリーンコード同様、絶対読んでほしい一冊です。
Clean Code アジャイルソフトウェア達人の技レガシーコード改善ガイド (Object Oriented SELECTION)