-
이 책은 예시로 GoF design pattern 을 많이 드는데, 사실 그것보다 refactoring 이 조금 더 맞는 게 아닐까 생각이 든다
- 추가로 refactoring 2판은 javascript 로 짜여져 있기 때문에 좀 더 type 에 유연한 거 같다
-
‘Object’ 라는 제목을 단 만큼, 중요한 건 객체지향적인 요소들(polymorphism
)을 사용하는건데, refactoring 1판에 나온 것처럼
-
면접 마지막 질문에 책 두권을 추천해달라고 이야기를 하면, refactoring 와 test driven development 두 개를 추천할 거 같다 (+ xP (extreme programming))
- 이게 객체지향적인 관점, 그리고 좋은 코드를 작성하는 관점, 마지막으로 실무와 괴리가 가장 적은 책이라서 정말 추천한다
-
ReservationAgency
에서 getMovieFee()
를 옮겨주는 과정이 사실상 refactoring 의 핵심
- 이 과정 중에서 local variable 을 최대한 제거하는 것이 중요하다
- martin fowler 아저씨는 code smell 을 맡을 때 local variable 로 보더라~
-
liscov substitution rule
‘A farmer’s child should work same with farmer’
- we can call some ‘subtype’ when
- a child class that inherit from parent class
- should replace the parent class
- child class 가 얼마 안 되는데 이게 의미가 있어? → 겁나 많아지면 헷갈리기 시작한다
- 그리고 이게 debugging 도 어렵게 만든다
- liscov substitution rule 을 만족하기 위해서는, 겉보기 행동이 똑같아야 함을 증명해야 한다
- 부모 class 에 갖다 넣는 test code 를 넣어서 구조적으로 확인을 하거나
-
effective java
- constructor 대신 abstract facotry method 를 사용하라
- avoid inheritance 라는 내용도 나온다
- 그런데 이 상속은 구현과 관련된 상속 (inheritance)
- 상속이 캡슐화를 깰 수 있다 → 명확한 예시, 예시가 없다면
-
Money
를 통해 만든 Dollar
와 Franc
을 참조하는 건 Money
로 참조할지, 아니면 그걸 기반으로 하는 Dollar
와 Franc
을