티스토리 뷰
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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ip
- 블루버블다이빙팀
- 패턴
- 블루버블
- Windows
- 윈도우
- 성산블루버블
- 서귀포
- DLL
- C
- 서귀포블루버블
- Sleep
- 울릉도
- 암호화
- C# 고급 기술
- PowerShell
- 블루버블다이브팀
- CMake
- Linux
- 제주도
- C++
- 외돌개
- 리눅스
- C#.NET
- C#
- Build
- Thread
- OpenSource
- 현포다이브
- 스쿠버다이빙
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함
반응형