피드로 돌아가기
Class — Encapsulation
Dev.toDev.to
Backend

Runtime Private Field 기반 Invariant 보호를 통한 데이터 무결성 확보

Class — Encapsulation

Nghề không nhiều chẳng sắc2026년 6월 29일6beginner

Context

Public State 노출로 인한 데이터 불변성(Invariant) 파괴 및 런타임 오류 발생 가능성 상존. 상태 변경 지점이 분산되어 버그 추적이 어렵고 코드베이스 전체를 분석해야 하는 디버깅 비용 증가 문제 직면.

Technical Solution

  • private field 도입을 통한 JavaScript Runtime 수준의 엄격한 접근 제어 구현

  • State 변경 로직을 전용 Method로 캡슐화하여 유효성 검증 및 Invariant 보호 체계 구축
  • Getter를 통한 Read-only 접근 허용 및 직접적인 State 수정 경로 완전 차단
  • 단순 Getter/Setter 지양 및 비즈니스 의미가 담긴 명명된 Method(예: withdraw) 중심의 설계 적용
  • God Object 방지를 위해 책임 범위에 따른 State 분산 및 작은 단위의 Class 설계 지향
  • DTO와 같은 단순 데이터 구조는 Readonly Record를 사용하여 오버엔지니어링 방지

- 런타임 수준의 보호가 필요한 State에 # private field 적용 여부 검토 - 단순한 값 설정을 위한 Setter 대신 도메인 로직이 포함된 Method 설계 적용 - 클래스 내 책임이 과도하여 Mocking 대상이 너무 많은 경우 God Object 여부 판단 및 분리 - 불변성 보호가 필요 없는 단순 데이터 전달 객체는 클래스 대신 Readonly 구조체 사용

원문 읽기