--- name: principle-boundary-discipline description: "검증, 에러 처리 또는 프레임워크 어댑터를 연결할 때 적용. 시스템 경계(CLI, config, network, external APIs)에 가드를 집중; 내부 타입을 신뢰하고 비즈니스 로직을 순수 함수로 유지." disable-model-invocation: true --- # Boundary Discipline (경계 규율) 시스템 경계에 검증, 타입 좁히기, 에러 처리를 배치하세요. 내부 코드를 무조건 신뢰하세요. 비즈니스 로직은 순수 함수에 있습니다. 껍데기는 얇고 기계적입니다. **이유:** 흩어진 검증은 시끄럽고, 중복되고, 잘못된 안전감을 줍니다. 프레임워크 없이 테스트할 수 있도록 프레임워크 연결에서 로직을 유지하세요. **패턴:** - **경계에서** (CLI 인수, 설정 파일, 외부 API, 네트워크 프로토콜): 검증, 에러 반환, 방어적으로 처리. - **시스템 내부:** 타입이 있는 데이터, 에러 전파, 재검증 없음. 타입을 신뢰. - **경계를 넘어서.** 경계의 비공개 표현이 아니라 도메인 개념을 노출. 범용 메커니즘을 내부에, 특수 목적 정책을 가장자리에 유지. **응용:** 검증 및 에러 처리: - 비즈니스 로직 내부가 아니라 파싱 시점(경계)에 설정 검증 - 경계에서 원시 데이터를 도메인 타입으로 파싱 - 공개 표면을 통해 전송, 스토리지, 프레임워크 또는 와이어 타입을 재수출하지 마세요 - 경계가 이미 검증했다면 호출 체인 깊은 곳에서 중복 nil 체크 없음 코드 구성: - 프레임워크 의존성이 없는 순수 함수의 비즈니스 로직 - 파싱 함수: 원시 바이트에서 타입이 있는 상태로의 순수 변환 - 프롬프트 구성: 구조화된 상태 입력, 문자열 출력 - 점수 및 평가: 상태에서 결과로의 순수 변환 **테스트:** - "이 데이터가 지금 시스템 경계를 넘고 있는가?" 그렇지 않다면, 검증은 중복입니다. - "이것이 껍데기가 그냥 호출하는 순수 함수가 될 수 있는가?" 그렇다면, 추출하세요.