AI Briefing

코드 품질 개선 - 세션 59: 물로 만든 클래스 파사드

·2025.12.26 11:00

클래스의 책임을 지나치게 분리하기보다 호출자 입장에서 인터페이스를 단순하게 유지하는 것이 중요하다.

데이터 저장소인 FooValueStore의 책임을 최소화하기 위해, 모든 데이터를 삭제하는 clearAll 기능을 별도의 클래스인 FooValueStoreClearer로 분리하는 설계 방식이 있다.

하지만 이러한 구조는 호출자(Caller)에게 복잡성을 전가한다. 호출자는 두 객체 사이의 관계를 이해해야 하며, 두 객체가 동일한 인스턴스여야 하는지 등의 제약 조건을 확인해야 한다. 이는 **최소 지식 원칙(Principle of Least Knowledge)**을 위배하고 설계를 어렵게 만든다.

클래스의 책임을 결정할 때는 단순히 책임을 쪼개는 것에 집중하기보다, 호출자에게 노출되는 인터페이스의 단순함에 초점을 맞춰야 한다. clearAll 기능을 FooValueStore 내부에 직접 구현하거나 확장 함수로 정의하면, 호출자는 하나의 객체만 관리하면 되므로 설계가 훨씬 간결해진다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.