TIL (Today I Learned) - 2025년 1월 20일
1. 스킬 시스템 리팩토링
- 기존에는 ActiveSkill, PassiveSkill, BuffSkill 등 각 스킬 타입을 별도의 클래스들로 관리했으나, 코드 중복과 유지보수 문제로 인해 BaseSkill 클래스로 통합 리팩토링 진행.
- 공통 로직(쿨다운, 스킬 효과, 강화 등)을 BaseSkill에서 처리하고, 각 스킬의 특화된 로직은 하위 클래스에서 구현하도록 구조 변경.
- SkillEffect 객체를 활용해 스킬 효과를 일관되게 처리하며, SkillEffectManager로 스킬 발동 로직 관리.
- 코드의 중복이 줄고, 새로운 스킬 타입 추가 시 확장성이 높아짐.
2. Inventory 시스템 리팩토링
- 기존에는 스킬, 무기, 장신구 등 아이템별로 별도 인벤토리를 관리했으나, 유지보수와 확장성 문제로 인해 통합된 구조로 리팩토링.
- 모든 아이템을 BaseItem으로 통합하고, 공통 로직은 BaseItem에서 처리, 아이템별 특화 로직은 각각의 클래스에서 구현.
- Dictionary를 활용해 ItemID를 키로 사용하여 빠르게 아이템을 검색하고, 공통된 추가/삭제 로직 적용.
- 코드 관리가 간소화되고, 아이템 추가/삭제와 같은 작업이 훨씬 수월해짐.
3. 트러블슈팅
- 트러블: 각 시스템(스킬, 아이템)에서 중복된 코드가 많고, 새로운 기능 추가 시 반복적인 작업과 수정 범위가 너무 넓었음.
- 해결 방법: 공통된 로직을 처리하는 베이스 클래스(BaseSkill, BaseItem)를 도입해 코드 중복을 줄이고, 하위 클래스에서는 특화된 로직만 구현하도록 설계 변경.
- 결과적으로 코드의 가독성과 유지보수성이 크게 향상되었고, 새로운 기능 추가 시 유연한 확장 가능.
4. 학습한 점
- 리팩토링의 중요성: 중복 코드를 통합하고, 시스템의 확장성을 고려한 구조 설계의 필요성을 느꼈음.
- 객체지향 설계 원칙 적용: 공통된 속성과 메서드는 상위 클래스로 통합하고, 타입별로 필요한 로직은 하위 클래스에서 구현하는 것이 효율적임을 확인.
- 이벤트 활용: 플레이어의 공격이나 스킬 사용 시 필요한 로직을 이벤트 기반으로 처리하여, 시스템 간 결합도를 낮추고 코드 관리 효율성을 높임.
5. 느낀 점
- 오늘 진행한 리팩토링 작업은 앞으로의 프로젝트 개발 속도를 크게 높여줄 것으로 기대됨.
- 코드 관리와 유지보수가 어려운 부분을 개선하니 작업의 효율성이 향상되었고, 추가적인 수정이나 기능 구현 시 발생할 수 있는 오류 가능성도 줄어들었다.
- 앞으로도 중복된 작업이나 비효율적인 구조가 보이면 적극적으로 리팩토링을 진행해야겠다고 다짐.
'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글
TIL(Today I Learned) - 82 (0) | 2025.01.16 |
---|---|
TIL(Today I Learned) - 81 (0) | 2025.01.15 |
TIL(Today I Learned) - 80 (0) | 2025.01.14 |
TIL(Today I Learned) - 79 (0) | 2025.01.13 |
TIL(Today I Learned) - 78 (0) | 2025.01.10 |