- 썼던 코드를 다시 쓸 수 있는 것
- 코드를 복붙하는 것 (헉!)
- 가장 대표적인 방법은 상속
- 코드의 중복을 줄이려고! (욕망)
- 변경 / 수정을 방해함 (노력을 n배 증가시킴)
- 어떤 코드가 중복인지 확인
- 왜 중복해서 써져있는지도 확인해야함
- 찾았다면, 일관되게 코드를 다 바꿔줘야함 (n개 동기화가 필요)
- n번 테스트 해봐야함. → 귀찮고, 위험하다
중복이 무엇인가? 중복에 대한 생각
- 진짜중복
- 요구사항이 변경 되었을 때 같이 변해야 한다? → 코드 중복!
- 가짜중복
- 하는 역할이 같을 때 (진짜 중복의 징후일 수는 있음)
- 따로 진화할 수 있는 경우 (변화/변경에 의해)
- 결합도가 높다.
- 코드 상에서는 서로 너무 많은 지식을 알고 있다.
- 너무 세부 구현까지 다 알고있다.
- 결합도가 높은 경우: 다른 클래스의 필드를 그대로 가져다 쓰는 경우
- 왜 안티패턴? - 변경 영향 여파의 선을 긋는다. - 사용하는 쪽에서의 변경이 있는 경우라 안티패턴 → 결합도가 낮으면 좋다! → 상속이 불편한 이유는 결합도가 높아지는 경우가 많기 때문
- 인터페이스가 달라지는 경우?
- 무조건 양쪽 다 달라질 수 밖에 없고
- 큰 변화니까 감수하고 가야함 (당연)
- 상속을 잘 쓰려면?
- 블랙박스여야 한다.
- 내가 의존하고 있는 것에 대해 모르면 좋다. (몰라야 한다)
⇒ 진리의 케바케다.