1.5 KiB
1.5 KiB
💡 Lesson Learned: 상태 관리의 단일 진실 공급원 원칙 (Data Consistency)
🎯 문제 상황 (The Problem)
테트리스 게임은 '현재 보드 상태'와 '움직이는 블록 위치'라는 두 가지 핵심 데이터를 가지고 있습니다. 이 데이터들이 여러 곳에서 독립적으로 업데이트될 위험이 있었습니다. 만약 A 부분에서 값을 바꾸고, B 부분에서 같은 값을 다르게 계산한다면 **데이터 불일치(Inconsistency)**가 발생합니다.
🔬 근본 원인 (Root Cause)
시스템의 핵심 상태가 분산되어 관리되고 있었기 때문입니다. 여러 컴포넌트와 로직이 각자 '진실'이라고 믿는 데이터를 가지고 충돌할 가능성이 높았습니다.
✅ 해결책 (The Solution)
**Redux/Zustand 패턴을 차용하여 모든 게임의 핵심 상태(State)**를 src/TetrisGame.jsx 컴포넌트가 관리하는 **단일 지점(Single Source of Truth)**으로 만들었습니다. 모든 데이터 변경은 이 중앙 저장소를 통해 이루어지게 했습니다.
💡 교훈 (Lesson Learned)
"상태는 오직 한 곳에서만 정의하고, 모든 로직은 그 상태를 읽고 쓰는 방식으로 동작해야 한다." 복잡한 시스템을 설계할 때, 핵심 데이터의 흐름(Data Flow)과 책임 범위(Responsibility)를 명확히 분리하는 것이 가장 중요합니다.