Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit d33501c

Browse files
committed
refactor
1 parent 6fb2c4b commit d33501c

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

books/refactoring.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,3 +781,19 @@ describe('', () => {
781781
- 異なる 2 つ以上のトピックが一つの関数に含まれている
782782
- 異なる 2 つ以上のトピックが時系列として前後に分離できる
783783
- 中間データ構造を使いながら移行を進める。詳細は本書 p161 参照。
784+
785+
## カプセル化
786+
787+
### レコードのカプセル化
788+
789+
- プレーンなオブジェクトをクラスインスタンスにする手法
790+
- より具体的には、クラス、Setter、Getter を使ってカプセル化する
791+
- (型、関数型プログラミング、Immutability 全盛の時代には少々時代遅れ感がある)
792+
793+
### コレクション(配列等)のカプセル化
794+
795+
- getter でコレクションそのものを返してしまうと、コレクションを保持するクラスを介さずに、その中身を変更できてしまう
796+
- これを防ぐために、get, add, remove の 3 つの関数を用意する
797+
- get では`slice()`等を使って複製してから返すことで変更されるのを防ぐ
798+
- あとでハードなデバッグをすることと比べたらパフォーマンス問題なんて微々たるもの
799+
- (これも、クラスを使わないで関数でできそう。やや時代遅れ感がある)

0 commit comments

Comments
 (0)