「リファクタリング 既存のコードを安全に改善する」を読む 2
第2章
- 機能追加とリファクタリング
- 「コードを理解しようとする時には、常にリファクタリングが役立ちます」
- 間接層とリファクタリング
- 「1つのものを2つに分割するということは、それだけ管理しなければならない部分が増えるということです。間接層は、最小限に絞り込むべきです。」
- リファクタリングと設計(めっちゃいいこと言ってる、最高
- 特性の横恋慕
- データと振る舞いを1つにまとめるのも重要だけど、振る舞いのみの変更に対処するために、データ/振る舞いの2つに分けた方がいいこともある。(ただし、回りくどくなるという欠点もある)
- memo: 初めから2つに分ける派だけど、人に説明する時に便利そうな文だと思った
- データと振る舞いを1つにまとめるのも重要だけど、振る舞いのみの変更に対処するために、データ/振る舞いの2つに分けた方がいいこともある。(ただし、回りくどくなるという欠点もある)
第4章
- 単体テストと機能テスト
- 完全なテストを求めるのではなく、怪しいと思う部分をテストすること。
- 多大な時間をかけて全てのバグを見つけるより、適切な時間で大部分のハグを見つけること
6〜11章
- 特に目新しいのはなく「あるある〜」という感じだったけど、改めて「やっていいんだな」という許しを得られた
- たまに「自分はやらん」というのもある
- ポリモーフィズムによる条件分岐の置き換え(p255)、サブクラスの抽出(p330)
- memo: まったくやらん訳では無いけどすぐ選ぶ選択肢でも無い。なぜなら私が継承の柔軟性を信用していないから
- Template Methodの形成(p345)
- memo: 継承前提の実装はTemplateの把握に苦しんだり、意図から外れた使い方されると途端に取り回しが困難になったりするので...
- ポリモーフィズムによる条件分岐の置き換え(p255)、サブクラスの抽出(p330)
- 苦肉の策よかった
- 外部メソッドの導入([p162)
- サービスクラスを拡張したいが許されない場合、サービスクラスのインスタンスを元に頑張る方法
- 局所的拡張の導入(p164)
- 1クラスに対して「外部メソッドの導入」を複数大なう場合は、継承 or 移譲 を作る
- 外部メソッドの導入([p162)
- データクラスによるレコードの置き換え(p217)
- memo: データクラスよく使うんだけど、「データクラス = 振る舞いが無い、オブジェクト指向じゃない、やめるべき」みたいな風潮あるの?