전통적인 패러다임에서 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것이다.
객체지향 패러다임에서는 코드를 재사용하기 위해 새로운 코드를 추가하는 데 그 중 가장 대표적인 기법이 상속이다. 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 기법이다.
코드를 재사용하려는 이유가 뭘까? → 중복된 코드를 제거하려는 욕망 → 그렇다면 중복된 코드의 문제는 뭘까?
중복 코드는 변경을 방해한다. 중복 코드는 코드를 수정하는데 필요한 노력을 몇배로 증가시킨다. 왜?
→ 귀찮고 위험하다.
중복을 판단하는 기준은 변경
이다. 요구사항이 변경되었을 때 두 코드를 함께 수정해야한다면 이 코드는 중복이다.
함께 수정할 필요가 없다면 중복이 아니다. 코드 모양이 유사하다는 것은 중복이라는 의미가 아니고 단지 중복의 징후일 뿐이다.(우발적 중복 관련 내용인듯)
중복 코드는 새로운 중복 코드를 부른다.