Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의
4
2 câu hỏi đã được viết
안녕하세요.
강의 내용 중 Dictionary의 Key 타입이 기존 int에서 string으로 전반적으로 변경된 부분에 대해 궁금한 점이 있어 문의드립니다.
일반적으로 int 타입에 비해 string 타입은 메모리 사용량이 더 크고, 해시 계산 비용 또한 상대적으로 높은 것으로 알고 있습니다. 따라서 Key를 string으로 변경할 경우 성능 및 메모리 측면에서 비효율이 발생할 가능성이 있다고 생각됩니다.
그럼에도 불구하고 해당 변경이 이루어진 의도나 설계상의 이점(예: 가독성, 확장성, 데이터 관리 측면 등)이 무엇인지 궁금합니다. 실제 프로젝트 환경에서 이러한 선택이 가지는 장점에 대해 설명해주시면 많은 도움이 될 것 같습니다.
감사합니다.
Câu trả lời 1
2
안녕하세요. 좋은 질문 감사합니다
말씀주신 것처럼 string은 int에 비해 메모리 사용량과 해시 비용이 더 큰 것은 맞습니다.다만 이번 강의에서 Key를 string으로 변경한 가장 큰 이유는 가독성과 유지보수성 때문입니다.
게임 개발은 코드와 데이터가 많고 여러 시스템이 연결되어 있기 때문에,1001 같은 숫자보다 "Player_HP"처럼 의미가 바로 드러나는 Key가 디버깅과 협업에 훨씬 유리합니다.또한 CSV/JSON 등 데이터 테이블과 연동하거나 확장할 때도 string이 더 유연하게 관리됩니다.
성능 측면에서는 string이 더 무거운 것은 사실이지만,일반적인 게임 로직에서는 체감될 정도의 성능 차이가 발생하는 경우는 거의 없습니다.대부분의 병목은 렌더링이나 물리, GC 등 다른 영역에서 발생하는 경우가 많기 때문입니다.
추가로, 실무 기준에서 보면 string보다는 enum으로 관리하는 방식이 더 안전하고 효율적인 경우가 많습니다.타입 안정성도 확보할 수 있고, 오타로 인한 오류도 방지할 수 있습니다.
이 부분은 강의에서 핵심 흐름 위주로 설명드리다 보니 충분히 짚어드리지 못한 것 같아 아쉬운 부분입니다.
정리하면
가독성과 데이터 관리 → string, enum
안정성과 성능 → enum / int
상황에 맞게 선택하는 것이 가장 좋은 방법입니다.
감사합니다.
1
헉! 강사님이시당...
상세한 답변 감사합니다.
말씀해주신 가독성과 유지보수성 측면에서 string Key를 사용하는 이유가 잘 이해되었습니다.
말씀해주신 것처럼 상황에 맞게 선택하는 것이 중요하다는 부분을 잘 고려해서 적용해보겠습니다.
상세하고 좋은 답변 한번 더 감사드립니다.
프로젝트 질문 문의
0
37
1
강의 코드 파일은 혹시 어디에 있나요?
0
67
1
오브젝트 파괴 애니메이션문제
0
59
2
Atlas에서 만든 Item 이미지가 삐져나옵니다
0
87
2
AddMarker를 했는데 east와 west는 잘되는데, north/south가 거꾸로 인식되는데 어떻게 해야할까요?
0
48
1
3강의 내용이 1강과 동일합니다
0
64
2
Text Object 애니메이션 이슈
0
71
3
Material 방식 수정 후 처음 포탈 할때만 아래 오류가 발생합니다
0
105
4
Inventory #1 강의 31분 28초경 오류 납니다
0
55
1
World 좌표
0
66
1
자료 ?
0
89
2
Terrain 세팅 값 문의
0
99
1
Resources.RoadAll 질문
0
67
2
Inventory #1
0
109
2
Item 연출 13:24 - Asset Manager 를 거쳐서 데이터를 가져오는 이유
0
123
2
오브젝트활성화 > 오브젝트 Hit 이펙트 쪽 질문입니다
0
99
2
1:30 - cutdown > idle - NoneInteraction false ?
0
99
2
ItemClicktap오류
0
77
1
일꾼 구현하기 #2 부분 영상 오류?
1
135
3
TextMeshPro 폰트 깨짐
0
418
2
character movement 반응속도
0
145
2
인터렉티브 키 24:14 Destory 질문
0
166
1
move함수
0
154
2
폰트에 따라 번집니다.
0
253
2

