피드로 돌아가기
Mastering State in Modern C++: Making It Explicit
Dev.toDev.to
Backend

Functional Core-Imperative Shell 기반 State Explicit 설계

Mastering State in Modern C++: Making It Explicit

Matti | funkyposts2026년 5월 6일5intermediate

Context

OOP 설계에서 발생하는 캡슐화된 Hidden State로 인한 의존성 파악 난항 및 테스트 복잡도 증가 문제 발생. 비즈니스 로직 내부에 상태 변경 로직이 산재하여 시스템 예측 가능성이 저하되는 한계점 노출.

Technical Solution

  • State Mutation을 Shell 계층으로 집중시켜 Core의 순수 함수(Pure Function) 특성을 보존하는 구조 설계
  • Shell에서 GameState를 유지하고 Core 함수 호출 시 필요한 데이터만 Input으로 전달하는 단방향 데이터 흐름 구축
  • Core 함수가 상태를 직접 수정하지 않고 업데이트된 새로운 상태 값을 반환하여 Shell에서 반영하는 State Evolution 메커니즘 적용
  • 도메인 모델(Snakes, Board, FoodItems)을 데이터 구조체로 정의하여 Logic과 Storage를 완전히 분리
  • 상태 의존성을 함수 시그니처에 명시함으로써 Hidden Dependency를 제거한 Explicit Dependency 구조 구현

- 비즈니스 로직 내에서 상태를 직접 수정하는 코드가 있는지 확인하고 이를 Pure Function으로 분리 - 상태 변경 전후의 데이터 스냅샷을 비교하여 테스트 케이스를 작성하는 방식으로 Testability 확보 - 모든 상태를 상위 계층으로 올리는 대신, 모듈 내부 상태(Cache, Parser 등)와 도메인 상태를 구분하여 캡슐화 범위 설정

원문 읽기