인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

dbwjd7wkd님의 프로필 이미지
dbwjd7wkd

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 아이템 시스템

인터페이스가 기능확장에 유연한 이유에 대한 질문입니다.

작성

·

32

·

수정됨

0

7강에서도 그렇고 8강에서도, 기능 확장에 유연하게 대처하기 위해 직접 참조를 피하고 인터페이스를 사용했다고 하셨습니다. 인터페이스를 사용하면 기능 확장에 유연한 이유가 제가 이해한 게 맞는지 확인 받고 싶습니다.

8강에서 예를 들자면, 만약 직접 참조로 설계하여 ABItemBox.cpp에서 #include "ABCharacterItemInterface.h"가 아니라 #include "ABCharacterBase.h"를 했는데 ABCharacterBase와 같은 급의 캐릭터 클래스가 추가 된다면 ABItemBox의 코드를 고쳐야 하므로 좋지 않은 게 맞을까요?

 

그리고 7강에서 스탯컴포넌트와 위젯컴포넌트간의 느슨한 결합을 위해 직접참조를 하지 않았는데, 만약 GSHpBarWidget에서 GSCharacterStatComponent를 직접 참조한다면 생기는 안 좋은 예도 들어주실 수 있을까요?

답변 1

0

이득우님의 프로필 이미지
이득우
지식공유자

네 기획은 항상 바뀔 수 있기 때문에, 가급적이면 특정 객체를 직접 참조하는 것이 아닌, 객체가 수행해야 하는 행동을 모아 둔 인터페이스를 참조하는 것이 보다 좋은 설계라고 볼 수 있습니다.

그 이유에 대해서는 Part1 강의에서 다루었는데요, 다만 개발 초기에는 기획이나 설계가 완벽하진 않기 때문에, 만들면서 계속 시행착오는 발생할 수 있음은 감안해주셔야 합니다.
두 번째로 예를 들은 GSHpBarWidget 의 기능은 단순히 들어온 체력 데이터만 표시할 뿐인데, GSCharacterStatComponent를 직접 참조한다면, 앞으로 모든 체력 데이터의 표시는 GSCharacterStatComponent에 기반되어야 함을 의미하는데 이러는 경우 다른 곳에서 재활용하기가 어려워질겁니다.

dbwjd7wkd님의 프로필 이미지
dbwjd7wkd

작성한 질문수

질문하기