Atlas 패턴 묶음
Atlas에서 반복된 우회를 한눈에 본다. 개별 사례를 읽기 전에 전체 지형을 파악하는 용도다.
패턴 지도
| 우회 패턴 | 발생 위치 | 위반 기준 | 문서 |
|---|---|---|---|
| Service → Repository 직접 생성 | Application Layer | 단일 진입점 | 백엔드 레이어 우회 |
| UI → Infrastructure 직접 참조 | UI Layer | 합법 경로 | 백엔드 레이어 우회 |
| 통신 계층 없이 직접 호출 | Cross-layer | 단일 진입점 | 통신 우회 |
| UI에서 파일 시스템 직접 접근 | UI Layer | 합법 경로 | UI 직접 파일 접근 |
| concrete 타입 직접 사용 | Application Layer | 단일 진입점 | 인터페이스 계약 위반 |
| UseCase 건너뛰고 직접 실행 | Application Layer | 합법 경로 | 실행 흐름 우회 |
| Store 없이 상태 직접 변경 | UI / Application | 상태 분리 | 상태 변경 우회 |
| fallback으로 입력 오류 숨기기 | Application Layer | 실패 신호 | 검증 우회 |
| debug 경로가 공식 경로로 고착 | Cross-layer | 정본 | 디버그 백도어 |
가장 자주 발생한 패턴
Atlas에서 AI와 함께 작업하면서 가장 많이 반복된 패턴은 두 가지였다.
new FileDocumentRepository() 직접 생성 — DI를 무시하고 구현체를 직접 생성한다. Roslyn이 잡기 전까지는 코드가 동작하기 때문에 AI가 가장 먼저 선택하는 경로다.
검증 우회 — null 체크 대신 ?? "temp" 같은 fallback을 삽입한다. 실패를 제거하는 것이 아니라 숨기는 방식이다. 겉으로는 코드가 더 유연해 보여서 발견이 늦다.
Roslyn 오류 코드 요약
| 코드 | 의미 |
|---|---|
| ATL001 | Application이 Infrastructure를 직접 참조 |
| ATL002 | Interface 없이 concrete 타입 사용 |
| ATL003 | Store/Event 없이 상태 직접 변경 |
| ATL401 | 검증 없이 실행 계속 |
| ATL402 | 빈 catch로 실패 은닉 |
전체 강제 구현은 → 실행 통제 — 빌드 타임 강제