강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

임성우님의 프로필 이미지
임성우

작성한 질문수

GAS 공부 중 질문있습니다

작성

·

38

·

수정됨

0

스크린샷(780).png

예전 파트2강의에서 레이어 규칙에 대해 들었는데, 이것이 결합도를 느슨하게 하여 개발과 유지보수에 좋은 구조라고 기억하고 있습니다.
현재 GAS코드를 보면
ABGA_Attack.Cpp 에서 ABCharacterBase 헤더파일을 받고,
ABGA_Skill.Cpp 에서 ABGASCharacterPlayer 헤더파일을 받고 있습니다.
GA는 다음 레이어 기준 중 Gimmick으로 보면 될까요?

그리고 레이어 규칙에 대한 질문이 몇가지 더 있습니다.
1. 해당 규칙은 소스 코드CPP 에서의 참조를 기준으로 둔 것인지, 헤더 파일에서의 참조를 기준으로 둔 것인가요?
2. 같은 층의 레이어 끼리는 서로 참조 할 일이 생길때 어떻게 하면 될까요? ex) AI와 Item
서로를 참조할 경우 크로스 레퍼런싱이 일어나 좋지 않다고 어디서 들은것같은데,
이 경우는 h파일,cpp파일 둘다 해당하는 얘기 일까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
임성우님께서 질문하신 내용에 대해 답변드리겠습니다.

  1. 레이어 규칙에 관한 기준: 소스 코드(CPP)와 헤더 파일에서의 참조 모두 레이어 규칙을 적용할 수 있습니다. 일반적으로 이 규칙은 시스템의 결합도를 줄이기 위해 설계되었으며, 주로 클래스나 모듈 사이의 의존성을 관리하는 데 중요한 역할을 합니다. 헤더 파일과 소스 파일 모두에서 적절히 적용해야 최상의 효과를 볼 수 있습니다.

  2. 같은 층의 레이어끼리 참조: AI와 Item처럼 같은 레벨에 위치한 것들이 서로 참조해야 할 경우, 인터페이스를 도입하거나 의존성 주입(Dependency Injection) 기술을 통해 직접적인 크로스 레퍼런스를 피하는 방법을 사용할 수 있습니다. 크로스 레퍼런싱으로 인한 문제는 주로 헤더 파일과 소스 파일 모두에 영향을 줄 수 있으며, 순환 종속을 방지하기 위한 설계가 필요합니다.

이미지에서 제시한 레이어 구조에서 GA가 Gimmick으로 볼 수 있는지는 구체적인 구현에 따라 달라질 수 있지만, 일반적으로 기능적인 단위로 묶여 있으므로 Gimmick으로 해석할 수 있습니다.

구현 시 의존성을 관리하여 유지 보수하기 좋은 구조를 설계하시기 바랍니다. 더 궁금한 점이 있으면 추가로 질문해 주세요.

게임 컴포넌트 요소 다이어그램

임성우님의 프로필 이미지
임성우

작성한 질문수

질문하기