DevSumi2009 「レガシーコード」とはいったい!? 〜あなたも書いてるかもしれないレガシーコード〜

Working Effectively With Legacy Codeの日本語版がもう少しで出る。->あとで買う

レガシーコード

テストコードが書かれていないコード

基本用語

  • Edit&Pray
    • 編集し、そして祈る
    • 不安を抱きながらコードを変更
    • 現在のソフトウェア開発の主流
  • Cover&Modify
    • カバーして、変更する
    • 変更の正しさを確かめるテストを用意
    • 作成したテストをセーフティネットとしてコードを変更
    • 変更の影響範囲が分かるので安心
    • これを目指す

実践レガシーコード

テストを書く

  • コンストラクタの引数が多い
    • 全部nullを渡す。Pass Nullパターン
  • DataSourceとか
    • テストの為ならリフレクションも厭わず
  • ビジネスロジック中でServletContetを使っているのでJUnitでテスト出来ない
    • 本番側にServletContetを取得出来るかできないかで
  • 何やってるか分からないClass・Method
    • とりあえずあり得ない結果が返ってこないassertだけは書いておく
  • データベースのテスト
    • Seasar2使ってなくてもS2Unitが有効

パネルディスカッション

  • テストの為なら何でもやる
    • privateなせいでテスト出来ないならpublicにしてしまえ
  • 書き直しても解決しない
    • 書き直したコードのテストがないなら、それもレガシーコード


なんかペースがかなり速くてちゃんとついていけなかったけど、
なんとなく言わんとしてる事は分かった感じがする。
本が出たら買おう。