WEwLC 読書会 第五回

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 をしてみたいなあと思う。

Chapter 22. レガモン(レガシーモンスター)

川西さん& mootoh さん担当。いかにもレガシーその3、モンスターメソッド(何千行もあるメソッド)を集める、じゃなかった、倒すための攻略情報。
一部界隈では「最長不倒関数」と呼んだ方が馴染みがあるかも?w


現実解としてはこの章でもおすすめされている自動リファクタリングツールの活用なのだろうけど、そうでない場合の話が後半につらつら書いてあり、これが意外と言ったら失礼かもしれないがおもしろい。
というわけでこの章はおすすめ。

Chapter 23. どこもぶっ壊してないなんて、どうやったらわかるのさ?

id:htada さん担当。コードの壊れやすさについて。
この章に書いてあることは、実はこの本お得意の後方参照によってここまでにも何度も話題に上っているので、目新しさは少なめ(汗)。


次回で読み終わるか終わらないかぎりぎりという感じ。日程は調整中。候補は 11/8。
というわけで単語が充実する期待を込めて貼ってみる。



そうそう、この本の懇親会にしては珍しく Excel の話が出なかった。 id:kunit さんがお休みだった。なるほど、そういうことかー。