高橋さん・・・ディノという会社で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
posted with amazlet at 09.02.13
Michael C. Feathers
Prentice Hall
売り上げランキング: 11427
Prentice Hall
売り上げランキング: 11427
おすすめ度の平均:
設計が悪いシステムの保守でお悩みの方へ
コメント
devsumi2009 : ところで他のセッションは??(その1)
Developers Summit 2009のサイトでトラックバックが公開されているので、そこから拾い読み <<レガシーコードとは>> http://d.hatena.ne.jp/monjudoh/20090213/1234504903 http://shinodogg.com/?p=2173 レガ…
・ヌ・ヨ・オ・゚、ヌ。ヨ・?ャ・キ。シ。ラ、ハネッノス、オ、サ、ニ、、、ソ、タ、ュ、゙、キ、ソ
コ」ケケ、ヒ、ハ、テ、ニ、キ、゙、、、゙、キ、ソ、ャ。「・ヌ・ヨ・オ・゚2009、ヒナミテナ、オ、サ、ニ、、、ソ、タ、ュ、゙、キ、ソ。」・ソ・、・ネ・?マ。ヨ・?ャ・キ。シ・…