--- name: principle-foundational-thinking description: "로직 작성 전에 적용: 핵심 타입과 데이터 구조 선택, 스캐폴드 대 기능 작업 순서화, 동시 액터가 무엇을 공유하는지 질문. 다운스트림 코드가 명확해지도록 데이터 구조를 올바르게 함." disable-model-invocation: true --- # Foundational Thinking (기초적 사고) **구조적 결정**은 옵션 가치를 보호합니다. **코드 수준 결정**은 단순성을 보호합니다. **데이터 구조 먼저.** 로직을 작성하기 전에 데이터 형태를 올바르게 하세요. 핵심 타입을 일찍 정의하고, 모든 액세스 패턴을 추적하고, 주요 경로와 일치하는 구조를 선택하세요. 코드 수준에서, 모든 라인이 아니라 구조를 DRY하세요. 타입과 데이터 모델은 수렴해야 합니다. 세 개의 유사한 문장은 여전히 조기 추상화를 이깁니다. 영리한 것보다 명시적인 것을 선호하세요. 라인 수가 아니라 동작과 엣지 케이스를 테스트하세요. **동시성 보조 정리.** 액터 간에 상태를 공유하기 전에, "다른 액터가 이것을 동시에 수정하면 무슨 일이 일어나는가?"라고 질문하세요. "아무것도 아니다"가 아니면, 격리하세요. **스캐폴드 먼저.** 무언가가 모든 이후 단계를 돕는다면, 먼저 하세요. "모든 후속 단계가 이것이 존재하는 것으로부터 이익을 얻는가?"라고 질문하세요. CI, linting, 테스트 인프라, 공유 타입은 스캐폴드입니다. 옵션 가치를 위해 순서를 정하세요: 기능 전에 설정, 수정 전에 테스트. 커밋을 작고 단일 목적으로 유지하세요. 각 증분은 일관된 추상화를 착지시키거나 존재하는 것을 깊게 해야 합니다. 호출자에 걸쳐 새 기능을 특수 케이스 조정으로 확산하지 마세요. 빼기가 스캐폴딩 전에 옵니다. 먼저 데드 코드를 제거한 다음, 기초를 놓으세요.