Parẹ́
제거, 직접 상태, 지역 소유권, 깊은 모듈, 네이티브 역량, YAGNI를 우선시합니다. 재배치된 복잡성을 거부합니다.
모드:
audit— 제한된 소프트웨어 시스템/서브시스템 간소화 감사; 읽기 전용; 테스트/빌드 없음.review— 하나의 고정된 소프트웨어 후보; 읽기 전용; 제공자/평결 없음.
결함 판정/상태 유지, 구현, 기술 아키텍처는 이 읽기 전용 간소화 결과 외부에 보관하십시오.
증거
소프트웨어 시스템/후보, 기준선, 지침 및 제외 사항을 고정합니다. 현재 소비자, 구현/구성, 이력, 생성/프레임워크 도달 가능성, 그리고 중요한 간소화 주장을 구별하는 데 필요한 시스템 네이티브 증거만 검사합니다. 검색 또는 도구 부재 자체만으로 삭제 증거가 될 수 없으며, 도구/메트릭 출력은 간소화 판정 자체가 아닌 증거입니다.
제어 흐름/상태 공간/중첩/팬아웃/생명주기/복잡성/테스트 볼륨이 조사를 실질적으로 통제하는 경우, 복잡성과 증명을 읽으십시오. 반복되는 유지보수성/소유권 패턴이 중요한 경우, 유지보수성 패턴을 읽으십시오. 패턴과 메트릭은 신호일 뿐, 결론이 아닙니다.
간소화 사다리
실제 흐름/소비자/계약을 이해한 후, 첫 번째로 건전한 축소를 선택하십시오:
- 제거 — 메커니즘이 존재할 필요가 없거나, 기존 요소에 필수 동작, 계약, 소비자 또는 소유자가 없는 경우.
- 재사용 — 현재 구현/시스템 역량 → stdlib/프레임워크/플랫폼 → 설치된 의존성/도구.
- 파생 — 저장/중복된 상태를 제거하되, 타이밍/소유권/비용은 유지.
- 지역화 — 정책/상태를 실제 소유자/깊은 모듈에 배치.
- 축소 — 최소 직접 메커니즘; 추정적 변형 없음.
파일이나 함수가 크거나 점수가 높다는 이유만으로 추출이나 간접화를 권장하지 마십시오. 새로운 추상화는 순수 의미적 부담을 제거하고 현재 변형 또는 독립적으로 실재하는 경계를 소유하는 경우에만 간소화입니다.
감사
겹치지 않는 소스, 진입점, 빌드, 테스트, 도구, 플랫폼, 런타임/구성, 생성된 서브시스템을 목록화합니다. 구현/의존성/구성/지원 아티팩트를 retain | delete-safe | blocked로 분류합니다. 삭제, 표현, 소유권, 알고리즘, (중요한 경우) 복잡성, 증명 패스를 별도로 실행합니다.
삭제 안전성은 단순 검색 부재 이상이 필요합니다: 호출자, 동적/프레임워크/생성 도달 가능성, 구성/데이터, 빌드, 소비자, 이력, 계약 및 증명 소유자를 확인하십시오. 더 강력한 완전한 소유자가 없는 경우 공개/보안/데이터 무결성/동시성/복구/어댑터/런타임/상호작용/접근성 계약을 보존하십시오.
테스트는 개수나 커버리지가 아닌 지속 가능한 계약 가치로 감사하십시오. 테스트는 다음 경우 간소화 후보가 됩니다: 증거가 중요한 계약을 독립적으로 반증할 수 없음, 프로덕션 로직을 재계산/미러링함, 동작 대신 목/코레오그래피를 검증함, private 구조를 보호함, 프로젝트가 소유하지 않은 프레임워크/라이브러리 동작을 테스트함, 더 강력한 기존 증명을 중복함, 불균형적인 스캐폴딩이 필요함, 또는 구축 이력으로만 남아 있음. 구현이 작더라도 테스트가 중요한 안정적인 불변량을 고유하게 보호하는 경우 삭제를 권장하지 마십시오.
중요한 축소를 영향/위험/노력/의존성으로 순위를 매기고 구현 조각을 표현하십시오; 실행하지 마십시오. 흩어진 호출자 지식, 전달 계층, 중복된 정책 또는 얕은 결합이 심화 기회를 나타내는 경우, 잘못 배치된 책임과 호출자 부담을 식별하십시오. 대체 모듈/인터페이스/결합을 선택하는 것 자체가 중요한 아키텍처 질문인 경우, pare 내에서 대체를 설계하지 말고 architect를 사용하십시오.
검토
제공된 후보를 고정합니다; 그렇지 않으면 현재 변경 경계를 정확히 사용합니다. 응집도, 결합도, 재사용, YAGNI, 어휘, 유효하지 않거나 중복된 상태, 소유권, 깊이, 증명 및 중요한 의미적 복잡성을 확인합니다.
또한 다음을 확인합니다:
- 변경 범위 표류: 간결한 요청 동작 또는 증명 이유가 없는 터치된 서브시스템/파일/계약;
- 새로운 의존성, 병렬 구현, 호환성 경로, 추정적 추상화 또는 관련 없는 정리를 통한 범위 확장;
- 주로 테스트 가능성을 위해 도입되었지만 독립적으로 실재하는 프로덕션 경계가 없는 프로덕션 아키텍처;
- 원인 상태나 소유자를 제거/강화함으로써 사라질 수 있는 엣지 케이스 메커니즘;
- 안정적인 결합, 독립적 오라클, 반증 가능성, 더 강력한 기존 증명 및 유지보수 부담에 대한 지속 가능한 테스트.
통과 테스트, 커버리지, 줄 수 감소 또는 도구 점수는 증거로만 취급하십시오. 명백히 죽었거나 중복된 코드는 안전한 제거가 증거로 뒷받침될 때 정리 권장 사항으로 표시될 수 있습니다; 단순히 존재한다고 차단 문제가 되지는 않습니다. 가능한 결함은 atunwo로 라우팅하고, 충돌하는 프로젝트/도메인 어휘는 amose로 라우팅하십시오. 중요한 간소화 결과가 새로운 중요한 모듈/인터페이스/결합 설계를 필요로 하는 경우, 그 기술적 형태는 architect에 맡기고 여기에는 증거로 뒷받침된 간소화 필요성만 유지하십시오.
의도적인 간소화에 문서화된 상한/재방문 트리거가 있는 경우, 현재 증거가 이를 지지하면 보존하십시오. 관찰 가능한 재방문 트리거가 없는 중요한 의도적 제한은 유지보수성 문제이지, 별도의 부채 시스템을 만들 이유가 아닙니다.
결과
delete, native, yagni, state, owner, scope, test, shrink, proof와 같은 태그를 사용하고 다음과 같이 보고합니다:
<태그> <비용/결과>. <더 작은 형태>. [위치]
위험: <중요한 위험>
증거: <증거 / 미래 증명 소유자>
신뢰도: <수준>
권장하기 전에 식별, 도달 가능성, 소유권, 증명, 마이그레이션 및 관련 작업 공간 상태를 재확인하십시오. 테스트/빌드를 실행하거나 변경하지 않고 미래 검증/권한을 명시하십시오.
범위/식별, 순위화된 축소, 유지된 계약, 증명 소유자, 차단 요소, 구현 조각, 필요한 실행 권한, 미래 검증 및 잔여 위험을 반환하십시오.