--- name: principle-minimize-reader-load description: "추적하기 어려운 코드를 검토하거나 형성할 때 적용. 질문과 답변 사이의 레이어와 독자의 머릿속 숨겨진 상태를 세고; 하나의 호출자 래퍼를 접고 가변 범위를 줄임." disable-model-invocation: true --- # Minimize Reader Load (독자 부담 최소화) 유지보수성은 독자가 코드를 이해하기 위해 해야 하는 작업입니다. 두 축을 추적하세요: **추적할 레이어** (질문과 답변 사이의 간접 참조)와 **보유할 상태** (독자가 머릿속에 유지해야 하는 숨겨지거나 가변적인 컨텍스트). LOC, 순환 복잡도, "클린 아키텍처"는 프록시입니다. 독자 부담이 중요한 것입니다. 두 축은 독립적입니다. 50개의 전역 변수가 있는 평면 파일은 6-레이어 어댑터 스택만큼 추론하기 어려울 수 있습니다. 둘 다 보호하세요. 이것은 [Guard the Context Window](../principle-guard-the-context-window/SKILL.md)의 인간 아날로그입니다. 작업 메모리는 독자에게도 유한합니다. - **레이어를 접으세요** 저장하는 것보다 비용이 더 많이 드는: 하나의 호출자가 있는 래퍼, 두 번째 구현이 없는 어댑터, 결코 필요하지 않았던 추측적 간접 참조. 인라인하세요. - **인접한 레이어가 추상화를 변경하도록 만드세요.** 동일한 메서드와 인수를 반복하는 레이어는 압축 없이 독자 부담을 추가합니다. 패스스루 레이어를 접으세요. - **인터페이스 압축을 요구하세요.** 적은 복잡성을 숨기는 넓은 인터페이스는 독자가 표면과 구현 모두를 배우도록 만듭니다. 의미 있는 결정을 숨기는 경계를 선호하세요. - **상태 범위를 줄이세요:** 순수 함수 (변경보다 반환), 필드보다 로컬, 모듈 상태보다 필드, 전역보다 모듈 상태를 선호하세요. 동기화 대신 파생하세요. - **경계에서 불변식을 명명하세요,** 모든 소비자에서가 아니라, 독자가 한 번 배우도록. - 레이어나 상태 조각을 추가하기 전에, 질문하세요: 다른 곳에서 적어도 그만큼 독자 부담을 줄이나요? **테스트:** 새로운 독자가 "X는 어디에서 오는가?" 그리고 "무엇이 X를 변경할 수 있는가?"를 30초 이내에 답할 수 있나요? 그렇지 않다면, 레이어를 자르거나 상태를 자르세요.