피드로 돌아가기
Dev.toBackend
원문 읽기
C# 데이터 모델링의 Reference vs Value Type 메모리 전략 분석
Class, Record and Struct in C#
AI 요약
Context
객체 지향 설계에서 데이터의 불변성(Immutability)과 메모리 할당 효율성 간의 충돌 발생. 특히 단순 데이터 전달 객체(DTO) 설계 시 Reference Type의 과도한 Heap 할당과 Value Type의 복사 비용 사이의 선택 필요.
Technical Solution
- Heap 기반 Reference Type인 Class를 통한 복잡한 객체 그래프 및 상속 구조 구현
- Stack 기반 Value Type인 Struct를 활용한 소규모 데이터의 메모리 오버헤드 최적화
- Class의 기본 Reference Equality 한계를 극복하기 위한 Record의 Value-based Equality 도입
- init accessor 적용을 통한 객체 생성 후 상태 변경을 방지하는 불변성(Immutability) 확보
- Deconstruct 메서드 구현 또는 Record의 기본 지원 기능을 통한 데이터 추출 구조 단순화
- Record Struct 채택을 통한 Value Type의 성능 이점과 Record의 편의적 문법 동시 확보
실천 포인트
- 소규모 데이터 및 빈번한 생성/소멸이 발생하는 경우 Struct 검토 - 데이터의 값 자체가 정체성인 DTO 설계 시 Record 활용 - 상태 변경이 필요 없는 읽기 전용 모델 설계 시 init 키워드 적용 - 메모리 참조 공유가 필요한 복잡한 도메인 모델 설계 시 Class 사용