Stats
Actions
Tags
Help us improve
Share bugs, ideas, or general feedback.
From sr-harness
코딩 품질 원칙 체크리스트. execute 시작 전 또는 코드 작성 중 참조. 네이밍·예외 처리·테스트 세 섹션으로 구성. Keywords: 코딩 원칙, 네이밍, 예외처리, 테스트, 품질, coding standards, naming, exception, test
npx claudepluginhub seokrae/sr-harness --plugin sr-harnessHow this skill is triggered — by the user, by Claude, or both
Slash command
/sr-harness:dev-coding-principlesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
코드를 작성하기 전, 각 섹션의 원칙을 확인하고 구현에 반영한다.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
코드를 작성하기 전, 각 섹션의 원칙을 확인하고 구현에 반영한다.
목표: 코드를 읽는 사람이 의미를 추론하지 않아도 된다.
PaymentProcessor ✅ / DataHandler ❌findActiveOrders() ✅ / getList() ❌calculateSettlementAmount() ✅ / calc() ❌Mgr, Svc, Util, Hlpr → 역할을 명시한 전체 이름 사용is / has / can 접두사 필수
isExpired() ✅ / expired() ❌List<Order> orders ✅ / List<Order> orderList ❌목표: 예외는 숨기지 않고, 발생한 원인과 문맥을 담는다.
RuntimeException 계열 사용 — checked exception은 복구 가능한 I/O에만 허용"결제 실패" ❌ → "결제 실패: orderId=" + orderId + ", reason=" + reason ✅e.printStackTrace() 만 있는 블록 작성 금지 — 최소한 로깅 필수throw new PaymentException("결제 처리 실패: orderId=" + orderId, e);
목표: 테스트는 코드의 동작 명세다 — 구현이 아닌 의도를 검증한다.
// given
Order order = OrderFixture.pendingOrder();
// when
PaymentResult result = paymentService.pay(order);
// then
assertThat(result.isSuccess()).isTrue();
결제_금액이_0원이면_예외를_던진다() ✅ / test1() ❌*Fixture 클래스로 분리하여 재사용assertThat(result).isNotNull() ❌ → assertThat(result.getStatus()).isEqualTo(COMPLETED) ✅§1 Naming
[ ] 도메인 언어를 사용했는가?
[ ] 메서드 이름에서 행위가 명확한가?
[ ] 약어를 사용하지 않았는가?
§2 Exception Handling
[ ] 비즈니스 예외는 unchecked인가?
[ ] 예외 메시지에 원인과 문맥이 포함되어 있는가?
[ ] 빈 catch 블록이 없는가?
§3 Test
[ ] given-when-then 구조인가?
[ ] 테스트 이름이 한국어로 의도를 표현하는가?
[ ] 단위/통합 테스트 경계가 올바른가?