내일배움캠프 63일차 TIL : 스테이지 매니저 리팩토링

woollim·2024년 12월 20일
0

내일배움캠프TIL

목록 보기
56/65
post-thumbnail

■ 개요

○ 오늘 계획

  • 중간점검 프로젝트 제출
  • PPT 발표자료로 편집
  • 디버깅


■ 스테이지 매니저 리팩토링

  • 문제 : 기획 변경으로 인해 리팩토링이 불가피함

  • 원인 :

    • 1) 구 스테이저 매니저 : 스테이지 랜덤 선택+씬전환+몬스터 소환
    • 2) 필요한 작업 : 몬스터에 맞는 씬으로 전환 되어야 함
  • 판단 :

    • 매니저 리팩토링 하여 로직 결합도를 낮추고 유지 보수성을높여야 함
  • 리팩토링 목적 :

    • 1) 기획 변경: 스테이지 랜덤 선택 후 해당 스테이지에 맞는 씬 전환과
      몬스터 소환 필요.
    • 2) 기존함수가 씬전환 로직과 몬스터 소환로직을 결합하여 유지보수
      힘듬.
    • 3) 유지보수성과 확장성 향상을 목표로 리팩토링 진행.

○ 주요 변경 사항

  1. StageManager 클래스
  • 역할 분리 : 랜덤 스테이지 생성, 씬 전환 / 몬스터 소환 로직 으로 분리
  • 데이터 초기화 : stageType과 stageID를 클래스 필드로 선언하고 초기화.
  1. 함수 분리
  • 랜덤 스테이지 생성 : CreateStage()에서 stageType 및 stageID 설정 후 씬 전환 처리.
  • 몬스터 소환 : EnterStageMonsterSpawn()에서 stageID 기반으로 몬스터 소환.
  1. 씬 전환 및 몬스터 소환 분리
  • CreateStage()
    • RandomStageType() 함수로 stageType, RandomStageID() 함수로 stageID를 결정하고 해당 씬전환
    • 아직 미구현인 이벤트 스테이지는 현재 제외.
  • EnterStageMonsterSpawn()
    • stageID를 기반으로 각 스테이지에 적합한 몬스터 소환.
    • stageType에 따라 보스 또는 일반 스테이지 데이터를 참조.

○ 주요 리팩토링 개선점

  1. 역할 분리
    스테이지 타입 결정, 씬 전환, 몬스터 소환의 독립성 강화.
    로직 간 결합도를 낮추고 유지보수성을 높임.
  2. 확장성
    새로운 스테이지 타입(이벤트 등) 추가 시 간단한 수정으로 대응 가능.
    몬스터 데이터 구조 변경에도 영향 최소화.
  3. 안정성
    예외 처리 및 데이터 검증 추가
    딕셔너리 비어있는 경우 경고 로그 출력.
    랜덤 값 범위 제한을 통해 오류 방지.

0개의 댓글