OOP 2

if-else 구조에서 전략 패턴으로(Feat: 고민의 기록)

들어가면서PDF에 텍스트, 이미지 등 다양한 형태의 입력 기능을 개발하면서 처음에는 단순하게 if-else 구조로 진행했습니다.예시 코드 if (type == TEXT) { ... }else if (type == IMAGE) { ... }예시에는 분기문을 2개로 표현했지만 실제로는 5~6개가 있었고각 조건에 수행하는 코드가 점점 길어지고 새로운 기능 추가나 일부 기능을 수정하는 것도 부담이 되기 시작했습니다.무엇보다 가독성이 떨어져 코드 흐름을 파악하기 어려웠고,결국 유지보수성까지 크게 낮아졌습니다.이 시점에서 “이 구조는 이제 리팩터링이 필요하다”고 판단했습니다.그러면서 전략 패턴, 커맨드 패턴, 함수 추출 등 다양한 방법등이 생각났고전략 패턴을 도입하기까지의 고민과 선택과정을 공유해보려고 합니다.1...

OOP 2025.11.04

캡슐화는 왜 중요한가? 변경 최소화와 응집도를 위한 경계 설계

들어가면서처음 웹 개발을 시작했을 때 OOP의 캡슐화에 대해 들은 설명은 단순했습니다.“필드를 private으로 두고 getter/setter를 쓰면 캡슐화된다.”당시에는 “getter로 내부 상태를 그대로 꺼내고 setter로 외부 값을 주입하는 게, 결국 public으로 열어두는 것과 뭐가 다른 걸까?” 라는 의문만 남았고 그런가 보다 하고 넘어갔습니다.그러다 최근에 「객체지향의 사실과 오해」, 「오브젝트」 같은 책을 읽으면서 알게되었습니다.캡슐화는 단순히 private 키워드를 붙이는 문법이 아니라, OOP에서 소프트웨어를 지속 가능하게 만드는 핵심 원칙이라는 점을 느끼게 되었습니다.제가 느낀 캡슐화는 getter/setter 남발이 아닌, 변경 전파를 줄이고 응집도를 높이는 경계 설계였습니다.즉,..

OOP 2025.09.14