현충일. 공휴일이라 유난히 조용한 하루였다.
팀원도, 수업도 없이 오롯이 나 혼자만의 시간.
사람 없는 이 평온이 반갑기도 하고, 한편으론 조금 심심했다.
오전 7시부터 밤 9시 50분까지, 긴 시간 동안
ATM & RPG 프로젝트의 뼈대를 다듬는 데 집중했다.
작동하는 것에 그치지 않고 유지보수성과 협업을 고려한 구조 개선이 주 목표였다.
문제 상황 (Trouble)
초기 구조는 동작은 했지만 점점 코드가 산으로 가고 있었다.
유저 데이터와 캐릭터 데이터를 동시에 다루면서 책임이 모호했고,
인벤토리와 스탯도 뒤엉켜 있어서 기능 하나를 고치려면 여러 파일을 건드려야 했다.
게다가 저장 로직도 곳곳에 흩어져 있어서 안정성과 테스트 측면에서 불안했다.
시도했던 것 (Attempt)
하나씩 구조를 잡기 시작했다. 특히 아래 3가지를 중점적으로 리팩토링했다:
1. 유저 데이터 시스템 구조 개선
- UserDataManager에 IUserDataManager 인터페이스 도입
- GameManager에서 직접 생성하지 않고 DI 방식으로 주입
- OnUserDataChanged 이벤트를 통해 UI 자동 갱신 가능하게 설계
2. 저장 / 불러오기 시스템 구현
- 유저 데이터에 ItemSaveData 리스트 추가
- SaveFromCharacter() 메서드로 인벤토리 → 저장 데이터 변환
- GameManager.SaveGame()에서 자동 저장 호출
- 캐릭터 생성 시 UserData의 저장 정보를 기반으로 아이템 복원
3. 전체 코드 주석 및 문서화 정리
- Character, CharacterStats, CharacterInventory 클래스에 XML 주석 추가
- GameManager의 Awake(), Start(), QuitGame() 메서드에도 상세 주석 작성
- UserData, UserDataList, Item, ItemData, ItemSaveData 등
저장 구조 전반에 걸쳐 직렬화 목적, 사용 맥락 설명 주석 강화
해결 방법 (Solution)
한 줄 한 줄 정리해가며, 구조가 사람을 배려하는 방향으로 바뀌는 걸 느낄 수 있었다.
DI 방식 덕분에 테스트도 편해졌고, GameManager에서 직접 생성 대신 의존 주입을 사용하면서
클래스 간의 결합도가 확연히 줄었다.
또한 OnUserDataChanged 이벤트 구조는 생각보다 꽤 유용했다.
PopupBank UI는 이제 입출금 시 자동으로 갱신되며,
따로 불러오는 코드를 작성할 필요 없이 이벤트 기반으로 반응하게 되었다.
알게 된 것 / 느낀 점 (Learning)
구현보다 중요한 건 구조와 의도, 그리고 내일의 나를 위한 정리라는 걸 다시금 실감했다.
문서화는 단순한 주석을 넘어, 나와 협업자 간의 신뢰이자 계약이다.
오늘 작성한 XML 주석과 인터페이스는 단순히 보기 좋기 위해서가 아니라,
다음 기능을 빠르게 만들고 유지할 수 있게 돕는 길을 닦는 일이었다.
한참을 정리하고 나서 코드를 다시 들여다봤을 때,
비로소 "이제 다음 기능을 올릴 준비가 되었다"는 확신이 들었다.
내일 할 일 (Next Steps)
오늘 정리한 구조를 기반으로,
남은 주석 작업을 마무리하고,
지금까지 구현한 기능들을 다시 훑으며 개선이 필요한 부분이나
추가할 기능이 없는지 차분히 정리해볼 계획이다.
- CharacterStats, CharacterInventory 쪽 누락된 주석 보완
- 아이템 필터, 정렬, 장착 슬롯 UI 같은 UX 요소 개선 가능성 탐색
- 저장 데이터의 안정성 테스트 (비정상 데이터 복구 여부 등)
정비가 끝나면, 그다음은 새로운 기능을 얹을 수 있을 것 같다.
조용히 단단하게 기반을 다져나가는 중이다.
'TIL' 카테고리의 다른 글
TIL 69일차 - 오늘, AudioMixer와 친구가 되었다 (2) | 2025.06.12 |
---|---|
TIL 68일차 - 몰입을 잃은 주말, 다시 개발자로 돌아오기까지 (0) | 2025.06.09 |
TIL 66일차 - 혼자 만든 설계 vs 요구된 설계: 그 사이의 리팩토링 (1) | 2025.06.05 |
TIL 65일차 - UI가 무섭다고 느꼈던 나에게 찾아온 기회 (2) | 2025.06.04 |
TIL 64일차 - "준비된 자의 코드" (0) | 2025.06.03 |