이번 주에 모델을 하나 만들다가 또 struct를 쓸지 말지 고민했다. 단순한 값 묶음이라 처음엔 가볍게 생각했다.
“이 정도면 struct면 되지 않을까?” 그런데 설계를 조금 더 만지다 보니 문득 생각이 멈췄다.
아 맞다, struct는 상속이 안 되지. 익숙함이 주는 착각 class를 쓰다 보면 자연스럽게 이런 식으로 생각하게 된다.
공통 속성은 부모로 빼고 확장 모델은 상속으로 늘리고 공통 로직도 위로 올리고 그런데 struct는 다른 struct나 class를 상속할 수 없다. (인터페이스 구현은 가능하지만) 이게 단순한 문법 제약이 아니라 설계 방식 자체를 제한한다.
왜 상속이 안 될까 struct는 값 타입이다. 복사된다.
상속이 가능해지는 순간, 다형성과 힙 기반 동작이 섞이게 된다. 그럼 “값처럼 동작한다”는 전제가 흔들린다.
결국 struct는 확장 가능한 개체가 아니라, 완결된 값 덩어리 로 보는 게 맞는 것 같다. 그래서 더 조심하게 됐다 처음엔 단순한 Spec...
원문 링크 : struct를 쓸 때 우리가 잊지 말아야 할 것