【13-E-4】 「レガシーコード」とはいったい!? ~あなたも書いてるかもしれないレガシーコード~ | 川西俊之 氏/ 大中浩行 氏/ 中谷秀洋 氏/ 高橋邦彦 氏

高橋さん・・・ディノという会社でWebアプリを作っている。
大中さん・・・通称せとあずさ。Working Effectively With Legacy Code読書会 会長、S2コミッタ。
中谷さん・・・サイボウズラボでiVocaとか。
川西さん・・・C、C++で開発。C言語用CSpec(そんなのあるんだ)等

レガシーコードとは?

  • COBOLで書かれたコード→×
  • WinNT4.0→×
  • あの先輩から引き継いだコード→×
  • 理解しづらい・変更しにくいコード。ではない。
  • ずばり、テストのないコード、を指す
    • コードでテストができないもの。

どうしたらよいのか?ということを考える

  • レガシーから逃げない
  • レガシーを作らない
  • レガシーを作り込ませない

用語

  • Edit&Pray
    • 編集して祈る。頼むから動いてくれ。
    • 現在の開発の主流(自分もそうです。。)
  • Cover&Modify
    • カバーして変更する
    • 変更の正しさを確かめるテストを用意

実践レガシーコード

  • コンストラクタが5個とかあるコードはどうやってテストする?
    • とりあえず、全部null渡してテストしてみる→いらないやつがいるはず。。
  • privateなプロパティの扱い方
    • テストのためならリフレクションもいとわない。(自分も昔そうしてました)
  • サーブレットコンテキストが業務クラスで呼ばれてる
    • 本番のコードに手を入れちゃう?→やりすぎ
    • JUnitからでもサーブレットコンテキストにつっこむ → シングルトンのオブジェクトに静的setter(ちょっと良く分からなかった)
  • CharactariseTest(?)
    • テストを通すより今あるコードの振る舞いをテストを通して追いかける。

本(Working Effectively With Legacy Code)について

  • 目次にグチが並んでる
    • 構造がないとか。クラスが大きすぎるとか。
    • 読み進めていくと、解決の糸口になるような。
    • 逃げないで。捨てずにそこからなんとかしよう。
    • テストがないものをリファクタリングとは呼ばない。
    • 本の中ではリファクタリングという言葉が出てこない
    • 負のスパイラルを自分が断ち切る。
      • 自分が作りなおしてもテストコードがなければ、それはレガシーだ。

コミュニケーションとしてのレガシーコード

  • 言葉で説明されてもよくわからない
  • コードをコードで説明してやればいい。テストコード。

—-
他にも川柳とか、とても楽しいセッションでした。
読書会楽しそう。

というか↓ほじぃ。。 

Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall
売り上げランキング: 11427
おすすめ度の平均: 5.0

5 設計が悪いシステムの保守でお悩みの方へ

コメント

  1. devsumi2009 : ところで他のセッションは??(その1)

    Developers Summit 2009のサイトでトラックバックが公開されているので、そこから拾い読み <<レガシーコードとは>>  http://d.hatena.ne.jp/monjudoh/20090213/1234504903  http://shinodogg.com/?p=2173  レガ…

  2. ・ヌ・ヨ・オ・゚、ヌ。ヨ・?ャ・キ。シ。ラ、ハネッノス、オ、サ、ニ、、、ソ、タ、ュ、゙、キ、ソ

    コ」ケケ、ヒ、ハ、テ、ニ、キ、゙、、、゙、キ、ソ、ャ。「・ヌ・ヨ・オ・゚2009、ヒナミテナ、オ、サ、ニ、、、ソ、タ、ュ、゙、キ、ソ。」・ソ・、・ネ・?マ。ヨ・?ャ・キ。シ・…

タイトルとURLをコピーしました