Multiple Inheritance Check

다중 상속은 기능 조합보다 중복 상태와 초기화 책임을 먼저 점검한다

두 부모가 모두 상태를 가진 구체 클래스라면 다이아몬드 문제가 생길 수 있습니다. 인터페이스 구현인지, 상태 공유인지, 합성이 나은지 순서대로 판단합니다.

점검 질문 위험 신호 A급 판단 선택
부모 둘이 같은 기반을 공유하나? Device 같은 공통 조상이 두 경로에 있음 중복 상태가 필요한지 먼저 설명 가능해야 함 virtual 검토
부모가 데이터 멤버를 가지나? id, handle, buffer 같은 상태가 여러 부모에 있음 어느 클래스가 초기화할지 명확해야 함 책임 분리
인터페이스만 섞는가? 구현과 상태까지 함께 물려받음 추상 인터페이스 구현이면 상대적으로 안전함 다중 구현 가능
합성이 더 단순한가? 상속 그래프 설명이 코드보다 어려움 멤버 객체로 조합해도 기능 요구를 만족함 합성 우선
판단 기준

“다중 상속으로 구현할 수 있다”가 아니라 “중복 상태와 생성 책임을 독자가 추적할 수 있다”가 유지 조건입니다.