wewlc

WEwLC の翻訳版「レガシーコード改善ガイド」が出るらしい

一人読書会 - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)で読んでいた本の翻訳が出るようだ。 お仕事上の関係で「テストがないコード」とおつきあいをしなければいけない人は読むとためになると思います。 どれだけテストを書く事に力を入れるかの加減も…

Break Dependencies - theVM グローバル変数問題

theVM がグローバルなのは良くない。今はしようがないがいずれ改善しようと気付いたので早速直す。 いたるところでグローバル変数 theVM->raise(xxx) などとしていたのを改善。4時間ほど。大変だった。 早速スタックトレースのテストが Fail して面白かった。

Working Effectively With Legacy Code を読み終えて

Working Effectively With Legacy Code を読み終えた。8/15 に読み始めたので約2ヶ月かかった。(実は英語の技術書を通して読むのは初めて) 良い技術書にはメッセージがこめられている。例えば Writing Solid Code であれば「どうやったらこのバグを防ぐこ…

25. Dependency-Breaking Techniques - Subclass and Overrid Method など - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック4つ。 マインドマップから再構成したまとめ 22.Subclass and Overrid Method 問題 ふるまい変えたい 手順 分離したいもの特定 overridable にする override する…

25. Dependency-Breaking Techniques - Pull up Featureなど - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック4つ。 マインドマップから再構成したまとめ 18.Pull up Feature 問題 クラスにBD難しいところがあり、テストしたいところはそこと依存関係がない別のメソッドだ …

25. Dependency-Breaking Techniques - Extract and Override Getterなど - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック9つ。 マインドマップから再構成したまとめ 9.Extract and Override Getter 問題 コンストラクタの中でインスタンス生成している その部分の動作を外から変えら…

25. Dependency-Breaking Techniques - Extract Override Call and Extract Override Factory Method - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック2つ。 マインドマップから再構成したまとめ 6.Extract Override Call 問題 テスト時に副作用のある global・static な call の中身を入れ替えたい 手順 対象のメ…

25. Dependency-Breaking Techniques - Definition Completion, Encapsulate Global References and Expose Static Method - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック3つ。 マインドマップから再構成したまとめ 3.Definition Completion 問題 テスト時に特定のメソッドだけ振る舞いを変えたい 前提 C/C++ のように実装と宣言でフ…

25. Dependency-Breaking Techniques - Adapt Parameter and Break Out Method Object- WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 25章 Dependency-Breaking Techniques からテクニック2つ。 マインドマップから再構成したまとめ 1.Adapt Parameter メソッドをテストしたいが引数を作れない(HttpServletxxxとか) インターフェースを作る。シンプ…

24. We Feel Overwhelmed It Isn't Going to Get Any Better - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 24章 We Feel Overwhelmed It Isn't Going to Get Any Better。 マインドマップから再構成したまとめ 参ったよ。全然良くならないんだ。 レガシーコードとの良いつきあい コミュニティへの参加 TDD 一番ひどいコード…

23. How Do I Know That I'm Not Breaking Anything? - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 23章 How Do I Know That I'm Not Breaking Anything?。 マインドマップから再構成したまとめ 何もこわしていないとなぜ分かるの? コードはとても壊れやすいことを認識せよ こわさない方法 Hyperaware Editing。訳…

22. I Need To Change Monster Method And I Can't Write Tests For It - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 22章 I Need To Change Monster Method And I Can't Write Tests For It。 マインドマップから再構成したまとめ モンスターメソッドを変更したいんだけどテスト書けないよ。 モンスターメソッドの種類 Bulleted Meth…

21. I'm Changing the Same Code All Over the Place - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 21章 I'm Changing the Same Code All Over the Place。 マインドマップから再構成したまとめ あちこちで同じコードを変更しているんだ 小さいコードが重複しているだけだよ。リファクタリングする価値はあるの? リ…

20. This Class Is Too Big and I Don't Want It to Get Any Bigger - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 20章 This Class Is Too Big and I Don't Want It to Get Any Bigger。 マインドマップから再構成したまとめ このクラス大きすぎだろ。これ以上大きくしたくないな。 典型的なパターン 変更は微調整が多い。その場に…

19. My Project Is Not Object Oriented. How Do I Make Safe Changes? - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 19章 My Project Is Not Object Oriented. How Do I Make Safe Changes?。 マインドマップから再構成したまとめ 僕のプロジェクトはオブジェクト指向ではないんだよ。どうやって安全に変更するのさ? 手続きが他言語…

16. I Don't Understand the Code Well Enough to Change It - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 16章 I Don't Understand the Code Well Enough to Change It。 マインドマップから再構成したまとめ コードを理解できないので変更は無理 ノート・スケッチ コードを読み、混乱したら絵を描こう 重要なものの名前を…

18. My Test Code is in the way - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 18章 My Test Code is in the way。 マインドマップから再構成したまとめ テストコードが邪魔だよ テストコードが邪魔だよ ルールを決めて快適にしよう ルール クラス命名規則(例:DBEngine) DBEngineTest (テス…

17. My Application Has No Structure - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 17章 My Application Has No Structure。 マインドマップから再構成したまとめ 僕のアプリには構造なんてないよ 構想を理解しないと コードの追加が大変だよ コスト高いよ 構造を理解する方法 ストーリーを語る シス…

15. My Application Is ALL API Calls - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 15章 My Application Is ALL API Calls。 マインドマップから再構成したまとめ 僕のアプリはAPIを呼んでいるだけだよ ほとんどAPIを呼んでいるだけだからテストはいらないよね? 必要だよ コードはいずれ増えるよ AP…

14. Dependencies on Libraries Are Killing Me - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 14章 Dependencies on Libraries Are Killing Me。 マインドマップから再構成したまとめ ライブラリに依存していて死にそうだよ ライブラリを直接使うと Seam になるはずだったところがなくなるよ 薄いラッパを書き…

13. I Need to Make a Change, but I Don't Know What Tests to Write - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 13章 I Need to Make a Change, but I Don't Know What Tests to Write。 マインドマップから再構成したまとめ コードを変更しないといけないのだがどういうテストを書けば良いか分からない 現状の振る舞いを守るた…

12. I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved? - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 12章 I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved?。 マインドマップから再構成したまとめ 1つのエリアに変更がたくさんある。関係のある全てのクラス…

11. I Need to Make a Change. What Methods Should I Test? - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 11章 I Need to Make a Change. What Methods Should I Test?。 マインドマップから再構成したまとめ 変更したいのだけど、どのメソッドをテストすべき? 既存のコードを変更するときに、どのメソッドをテストすれば…

10. I Can't Run This Method in a Test Harness - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Codeの 10章 I Can't Run This Method in a Test Harness マインドマップから再構成したまとめ メソッドがテストできない メソッドが private だ。 protected にして継承しテスト テストから検知不能の副作用がある 「安全…

9. I Can't Get This Class into a Test Harness - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 9章 I Can't Get This Class into a Test Harness。 マインドマップから再構成したまとめ Test Harness でクラスを使えない いらいらパラメータ コンストラクタに引数を渡さないといけない Extract interface Pass …

8. How Do I Add a Feature? - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 8章 How Do I Add a Feature?。 マインドマップから再構成したまとめ どうやって機能を追加しよう 2つの方法 TDD TDD の良いところ「Writing」「Refactoring」のフェーズを分けているのどちらかに専念できる TDD の…

7. It Takes Forever to Make a Change - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 7章 It Takes Forever to Make a Change。 「この変更は永遠に終わらないんじゃないか」。これも体験ある。 マインドマップから再構成したまとめ 変更が永遠に終わらないと思う要素3つ 理解する コードの量が増える…

6. I Don't Have Much Time and I Have to Change It - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 6章 I Don't Have Much Time and I Have to Change It。 「コードを変更しないといけないんだけど時間がないんだよ!」ということはみなさん経験ありそう。 マインドマップから再構成したまとめ 基本姿勢は非常にシ…

5. Tools - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 5章 Tools。 ツールやフレームワークの紹介。 マインドマップから再構成したまとめ ツール リファクタリングツール 時間の節約になる コードを壊してしまうものもある。テストしてからつかえ。 Mock Object http://…

4. The Seam Model - WORKING EFFECTIVELY WITH LEGACY CODE (WEwLC)

Working Effectively With Legacy Code の 4章 The Seam Model。 Seam とは日本語では継ぎ目、縫い目のこと。 The Seam Model の考え方を全く知らなかった。こういう視点でコードを眺めてテストを書くのはどんな世界なのだろう。早く実践しよう。 マインドマ…