『レガシーコード改善ガイド』の勉強会に参加しました

『レガシーコード改善ガイド』討論・品評会 #1 #lckaizenに参加してきました。最近はゲーム関連の勉強会に参加することが多かったので、こういう真面目な勉強会は久しぶりです。参加者のレベルが高くて恐れ入りました。

Togetterで本日の内容についてはまとめられるはずですが、いくつかのトピックについて考えたことを軽くまとめておきます。あまり議論に入っていけなかったので。

使い捨ての作業について

使い捨ての応急処置敵な作業をする必要があることはしばしばあると思います。バグを見つけたページに対して一時的に別のページを表示しておくとか、プレゼンでデモする為に一時的に動かしたいとか。そのときに、使い捨てになるようなコードを書いても良いのか?テストを書くか?という話。
同じような作業を2回以上する必要があるなら、正しく設計してレガシーなコードにならないようにしたほうがいいということでした。

モッキスト

何でもかんでもモックオブジェクトで試験する人は"モッキスト"と呼ばれているらしいです(JUnit実践入門を参考)。
僕自身は最初にテストの書き方を教わったとき、モックを使った書き方を教えてもらってそれで納得していたので、ずっとこの方法で書いていましたが...。
「モックを作るコスト」「更新するコスト」の2つを考えて、どちらを選択するか、および両方を採用するかを決める必要があります。

僕が基本的にJavaで試験を書く時は、"試験をする為に"(モックを使いやすくする為に)インターフェースを切る事が多かったので、それは本当の意味でインターフェースなのかを再考する必要がありそうです。

レガシーコードは成果物

印象に残った言葉。

レガシーなのは人であり、レガシーコードは成果物なのだ


後で思い出したらもう少し足します...。