1.4 KiB
1.4 KiB
💡 Lesson Learned: 시스템 아키텍처의 중요성 (The Need for Abstraction)
🎯 문제 상황 (The Problem)
이번 프로젝트를 진행하면서, 코드를 짜는 것이 아니라 '어떤 구조로 짤지'가 가장 어려웠습니다. 이는 단순히 기술적인 문제가 아닌 **설계 패턴(Design Pattern)**과 관련된 문제입니다.
🔬 근본 원인 (Root Cause)
모든 로직을 한 파일에 때려 넣으려는 유혹에 빠지는 것, 즉 '스파게티 코드'를 만들 위험이 가장 큰 문제였습니다. 모든 것을 한곳에서 처리하려 했기 때문에 유지보수성과 확장성이 0에 수렴했습니다.
✅ 해결책 (The Solution)
**아키텍처적 분리 원칙(Separation of Concerns, SoC)**을 적용하여 코드를 다음과 같이 역할별로 나눴습니다:
- 게임 규칙:
gameWorker.js(논리 엔진) - 상태 관리:
TetrisGame.jsx(데이터의 출입구) - 렌더링: React 컴포넌트 (화면에 보여주는 역할만 수행)
💡 교훈 (Lesson Learned)
"시스템을 구성할 때는 '책임 분리(Separation of Concerns)'를 최우선 원칙으로 삼아야 한다." 기능이 복잡해질수록, 코드는 반드시 경계가 명확한 모듈들로 분리되어야 합니다.