レガシーコード改善ガイド読書会

12
1 楽楽楽楽楽楽 DU 楽楽楽楽楽楽 G 楽楽楽楽楽楽楽楽 2010 楽 6 楽 23 楽 楽楽楽楽楽楽楽楽 楽楽楽楽楽楽楽楽楽楽楽楽 楽楽楽楽楽 2 楽楽楽楽楽楽楽

Upload: hiro-yoshioka

Post on 28-Nov-2014

3.147 views

Category:

Technology


0 download

DESCRIPTION

レガシーコード改善ガイド読書会(社内開催)のまとめです。

TRANSCRIPT

Page 1: レガシーコード改善ガイド読書会

1

楽天株式会社 DU アーキテクトGよしおかひろたか | 2010年 6月 23日

よしおかひろたかレガシーコード改善ガイド

読書会報告~第 2回テスト勉強会~

Page 2: レガシーコード改善ガイド読書会

2

No TEST, No LIFE 読書会報告

• テストを書かないプロフェッショナルはいない(プログラマ的な意味で)

• テストのないコードはレガシーコードだ。

• 読書会した~

レガシーコード改善ガイド保守開発のためのリファクタリング、翔泳社

http://books.rakuten.co.jp/rb/6121689/

Page 3: レガシーコード改善ガイド読書会

3

No TEST, No LIFEレガシーコード改善ガイド読書会

• 世話役:アーキテクト G よしおかひろたか• 日程: 19 時~ 20 時 30 分ころ• やり方:分担で、説明して、参加者による議論• 4 月 1 日~ 6 月 16 日、計 9 回開催した。• 最終回は品川のインド料理屋で打ち上げ• 参加資格:レガシーコードを改善して幸せになる覚

悟• 参加登録: 21 名• レガシーコードを改善して楽をしよう

 楽しかったよ

Page 4: レガシーコード改善ガイド読書会

4

No TEST, No LIFE やり方

• 読み方– 担当者が、章の要約を発表– 質問、議論、あれやこれや

• 仕事へのフィードバック– 実際適用してみて、上手くいったこと、

難しかったことなどを共有した

Page 5: レガシーコード改善ガイド読書会

5

No TEST, No LIFE 担当Working Effectively with Legacy Codeレガシーコード改善ガイド---------------------- 1第 1 部 変更のメカニズム 第 1 章 ソフトウェアの変更第 2 章 フィードバックを得ながらの作業第 3 章 検出と分離第 4 章 接合モデル第 5 章 ツール---------------------- 2第 2 部 ソフトウェアの変更 第 6 章 時間がないのに変更しなければなりません第 7 章 いつまで経っても変更作業が終わりません第 8 章 どうやって機能を追加すればよいのでしょうか?第 9 章 このクラスをテストハーネスに入れることができません---------------------- 3第 10 章 このメソッドをテストハーネスで動かすことができません第 11 章 変更する必要がありますが、どのメソッドをテストすればよいのでしょうか?---------------------- 4第 12 章  1 ヶ所にたくさんの変更が必要ですが、関係するすべてのクラスの依存関係を排除すべきでしょうか?第 13 章 変更する必要がありますが、どんなテストを書けばよいのかわかりません第 14 章 ライブラリへの依存で身動きが取れません第 15 章 私のアプリケーションは API 呼び出しだらけです第 16 章 変更できるほど十分に私はコードを理解していません第 17 章 私のアプリケーションには構造がありません第 18 章 自分のテストコードが邪魔になっています

---------------------- 5第 19 章 私のプロジェクトはオブジェクト指向ではありませんが、どうすれば安全に変更できるでしょうか?第 20 章 このクラスは大きすぎて、もうこれ以上大きくしたくありません第 21 章 同じコードをいたるところで変更しています---------------------- 6第 22 章 モンスターメソッドを変更する必要がありますが、テストを書くことができません第 23 章 どうすれば何も壊していないことを確認できるでしょうか?第 24 章 もうウンザリです。何も改善できません 第 3 部 依存関係を排除する手法 第 25 章 依存関係を排除する手法25.6  呼び出しの抽出とオーバーライド---------------------- 725.7   Factory Method の抽出とオーバーライド付録 A  リファクタリングA1  メソッドの抽出付録 B  用語集

Page 6: レガシーコード改善ガイド読書会

6

No TEST, No LIFE 中身

• テストが無いコードはレガシーコード• 編集して祈るメソッド(業界標準)から、

保護して変更する(ベストプラクティス)へ

• 変更するためにはテストが必要• テストがあればリファクタリングできる• テストを書く方法が具体的に示されている

Page 7: レガシーコード改善ガイド読書会

7

No TEST, No LIFE テストの真髄を学んだ

• レガシーコードは南斗聖拳(外から攻める)

• 新規開発は北斗神拳(中から攻める)

Page 8: レガシーコード改善ガイド読書会

8

No TEST, No LIFE 振り返り  KPT

• Keep よかったこと– 担当の章の発表と、質疑応答、自由な議論– プロジェクトの経験の共有ができた– 価値観の共有ができた– 読書会がきっかけで一部であるが unit test を書くようにな

った• Problems 問題

– 参加者が徐々に減った– 多くの人のスケジュール調整が大変

• Try 試したいこと– 早朝読書会– 昼休み読書会(夜だとスケジュール調整が難しいので)

Page 9: レガシーコード改善ガイド読書会

9

No TEST, No LIFE 感想

• テストが無いコードはレガシーコードだという共通の理解ができた

• 編集して祈るメソッドから、保護して変更するという価値観を共有できた

• かなり重たい(分量的にも内容的にも)本を、読み終えた

• 発表者、参加者でいろいろ自分の仕事に照らし合わせて議論ができた

• 現場ではテストプログラムが作られていないということがよくわかった

• さっくばらんに、包み隠さず本音で議論が出来た

Page 10: レガシーコード改善ガイド読書会

10

No TEST, No LIFE

開発者の皆さん、テストを書こう

テストを書いてプロフェッショナルになろう

世界へ

Page 11: レガシーコード改善ガイド読書会

11

No TEST, No LIFE

Page 12: レガシーコード改善ガイド読書会

12

No TEST, No LIFE おまけ

• x Unit Test Patterns• http://xunitpatterns.com/• Hardcover: 833 pages • Publisher: Addison-Wesley

(May 31, 2007) • Language: English • ISBN-10: 0131495054 • 読書会やりたい~(重いので)