10/11 に "Working Effectively with Legacy Code" 読書会の第五回が、サイボウズ・ラボを会場に行われました。
って、ずいぶん昔の話ですんません……。今週は某英語ゲームのリリースとか某くまっぽい LT とかでなんだか忙しかったもので。
今回の範囲は、「クラスが殺人的にでかい」とか「いや、そもそもメソッドが何千行も(ry」とか、"Legacy Code" という言葉を耳にしたときにまさに思い浮かべそうなシチュエーションでのプレイについて。
Chapter 20. このクラス、でかすぎ! これ以上膨れ上がらせるのはヤダ
小西さん担当。いかにもレガシーその1、クラスが大きいということは責務(Responsibilities)が明確になってないってことでしょう、そういうときはね……という話。
最初の節 "Seeing Responsibilities" にて、埋没している責務を探して見つける方法を7つの経験則にまとめられており、内容的にはここがこの章の全てと言ってもいい。
もっとも、経験則6と経験則7は、今まさに困っている子羊の役にはあまり立たない。ていうか、そもそもこの本に書いてあること全て経験則なんだけども(苦笑)。
それでもあえて経験則と明記するということは、この部分については経験を積んでいくしか答えがないということなのだろうか。
確かに、2年目プログラマに6章の Sprout Method とかならやらせてみることができるかもしれないけど、責務の抽出はそれを任せているところを想像すらできないなあ。
Chapter 21. そこら中にコピペが蔓延してて、それ変更しろってどうよ
kzys さん担当。いかにもレガシーその2、コピペ病の対策。
この章の最大の衝撃は、前振り部分の最後の段落にある。
まず必要なのは、リファクタリング後に走らせるテストのセットだ。幸いなことに、今回はそれがある。
それ、Legacy Code じゃあないから!!! 仲間だと信じていたのに裏切られた気分である。
内容的には一般的なリファクタリング。なぜか "First Steps" しかないというあたりは謎なのだが。
Chapter 13. 変更を行う必要があるんだけど、どんなテストを書いたらいいのかわかりません><
担当の id:t-wada さんが姿を現したので、ここにて。未知のレガシーコードの使用を把握するための Characterization Tests について。
他の人の書いたコードよりむしろ、自分が昔書いたコードについて Characterization Tests をしてみたいなあと思う。