작성
·
30
·
수정됨
0
7강에서도 그렇고 8강에서도, 기능 확장에 유연하게 대처하기 위해 직접 참조를 피하고 인터페이스를 사용했다고 하셨습니다. 인터페이스를 사용하면 기능 확장에 유연한 이유가 제가 이해한 게 맞는지 확인 받고 싶습니다.
8강에서 예를 들자면, 만약 직접 참조로 설계하여 ABItemBox.cpp에서 #include "ABCharacterItemInterface.h"가 아니라 #include "ABCharacterBase.h"를 했는데 ABCharacterBase와 같은 급의 캐릭터 클래스가 추가 된다면 ABItemBox의 코드를 고쳐야 하므로 좋지 않은 게 맞을까요?
그리고 7강에서 스탯컴포넌트와 위젯컴포넌트간의 느슨한 결합을 위해 직접참조를 하지 않았는데, 만약 GSHpBarWidget에서 GSCharacterStatComponent를 직접 참조한다면 생기는 안 좋은 예도 들어주실 수 있을까요?
답변 1
0
네 기획은 항상 바뀔 수 있기 때문에, 가급적이면 특정 객체를 직접 참조하는 것이 아닌, 객체가 수행해야 하는 행동을 모아 둔 인터페이스를 참조하는 것이 보다 좋은 설계라고 볼 수 있습니다.
그 이유에 대해서는 Part1 강의에서 다루었는데요, 다만 개발 초기에는 기획이나 설계가 완벽하진 않기 때문에, 만들면서 계속 시행착오는 발생할 수 있음은 감안해주셔야 합니다.
두 번째로 예를 들은 GSHpBarWidget 의 기능은 단순히 들어온 체력 데이터만 표시할 뿐인데, GSCharacterStatComponent를 직접 참조한다면, 앞으로 모든 체력 데이터의 표시는 GSCharacterStatComponent에 기반되어야 함을 의미하는데 이러는 경우 다른 곳에서 재활용하기가 어려워질겁니다.