개발/코더 탈출
4편: DECLARE_PROPERTY – 반복되는 getter/setter 자동화
-=HaeJuK=-
2025. 4. 9. 16:37
728x90
반응형
4편: DECLARE_PROPERTY – 반복되는 getter/setter 자동화
객체지향에서 캡슐화는 중요한 원칙입니다.
하지만 private 멤버 + public getter/setter 패턴은 너무 반복적이라 지겹죠.
그래서 등장하는 것이 DECLARE_PROPERTY
같은 매크로입니다.
😫 반복되는 getter/setter
class Person {
private:
std::string m_name;
public:
const std::string& GetName() const { return m_name; }
void SetName(const std::string& name) { m_name = name; }
};
위 코드를 모든 속성마다 계속 작성한다면 생산성이 떨어지고, 실수도 많아집니다.
🪄 해결 방법: DECLARE_PROPERTY 매크로
#define DECLARE_PROPERTY(type, name) \\
private: type m_##name; \\
public: \\
const type& Get##name() const { return m_##name; } \\
void Set##name(const type& value) { m_##name = value; }
✅ 사용 예시
class Person {
DECLARE_PROPERTY(std::string, Name)
DECLARE_PROPERTY(int, Age)
};
위 코드 한 줄이 getter + setter + 멤버 변수를 동시에 생성합니다.
⚡ 장점
- 코드 반복 제거
- 속성 관리의 일관성 확보
- 리팩토링 시 변경 포인트 최소화
⚠️ 주의할 점
- 디버깅 시 IDE에서 매크로 내용을 확인하기 어렵습니다.
- 인텔리센스(자동완성) 지원이 매크로 안에서는 떨어질 수 있습니다.
- 실제 getter/setter 동작을 커스터마이징하려면 매크로보단 함수로 구현하는 게 낫습니다.
🧩 확장 아이디어
추후 JSON 직렬화, INI 파싱 등에도 다음과 같이 응용할 수 있습니다:
#define DECLARE_SERIALIZED_PROPERTY(type, name) \\
private: type m_##name; \\
public: \\
const type& Get##name() const { return m_##name; } \\
void Set##name(const type& value) { m_##name = value; } \\
REGISTER_PROPERTY(#name, &m_##name);
✅ 요약
매크로 | 기능 |
---|---|
DECLARE_PROPERTY(type, name) |
getter/setter/멤버변수 자동 생성 |
🔚 마무리 한 줄 요약
반복되는 getter/setter? DECLARE_PROPERTY
한 줄로 정리해보세요. 당신의 코드가 한층 깔끔해집니다. ✨
728x90