{
상속성을 주의해서 사용해야 하는 이유는 "강력한 관계"는 보다 쉽게 "강력한 상처"를 줄수 있기 때문이다. 상속은 C++ 에서 손에 꼽힐 정도로 강력한 관계를 맺게 해주는 개념이다.
상속을 사용하면, 다음과 같은 이점을 살리기 어려워 진다.
1. 코드의 유연성
A 클래스와 B 클래스가 서로 독립 될 수 있는 경우, 각각의 변경은 서로에게 영향을 미치지 않으므로, 언제 어디서든 A는 B와는 상관 없이, B는 A와 상관없이 사용 될 수 있다.
2. 빠른 컴파일
각각의 변화에 따른 컴파일을 할 필요가 없다. 만약 B 클래스가 A 클래스를 상속해서 구현되었다면, A 클래스의 변화가 있을 때마다 B 클래스 역시 재컴파일 해야 하는 시간을 내놓아야 한다.
3. 적은 혼란
각각 독립적이기 때문에, 한 클래스에만 집중 해도 될 수 있음, 만약 B 클래스가 A 클래스를 상속한다면, 이름 가림 현상, 복사 생성자, 소멸자 처리 등.. 생각해야 할 것이 너무 많아지는 혼란을 겪게 된다.
이러한 이점은 유지/보수에 큰 영향을 미치기 때문에, 상속이 꼭 필요하지 않다면, 쓰지 않는게 "상책" 이다. 몇가지 팁으로 꼭 필요한 경우는 생략하고, 경험적으로 하는 실수만 예를 들겠다., "코드를 재사용하기 위해서 상속을 한다" 말을 많이 듣는데, 상속은 코드의 재사용 때문에 사용하는 기술이 아니다.
물론 코드의 재사용으로 사용 할 수는 있지만, 좀더 튼튼하고 안전한 재사용 기법(일반화 프로그래밍)이 있기 때문에, 굳이 어려운 상속을 쓰지 않아도 된다. 그러므로 "코드의 재사용을 위해 상속"하는 것을 쓰지 말자.
}
최근댓글