3.3 KiB
3.3 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, tags, raw_sources, last_reinforced, github_commit, inferred_by, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | tags | raw_sources | last_reinforced | github_commit | inferred_by | tech_stack | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-god-object-antipattern | God Object Antipattern | 10_Wiki/Topics | needs_review | self |
|
none | A | 0.99 |
|
2026-04-20 | pending | Claude Opus 4.7 (auto-normalize 2026-05-08) |
|
God-Object-Antipattern (신 객체 안티패턴)
📌 한 줄 통찰 (The Karpathy Summary)
"모든 것을 알고, 모든 것을 하려다 결국 아무것도 못 하게 만드는 거대 클래스의 재앙." 단일 책임 원칙(SRP)을 무시하고 너무 많은 기능을 한 클래스에 몰아넣어, 유지보수가 불가능한 '블랙홀' 같은 코드를 만드는 현상이다.
📖 구조화된 지식 (Synthesized Content)
- Symptoms:
- 클래스 이름이
Manager,System,Controller처럼 너무 포괄적임. - 소스 코드 줄 수가 수천 줄을 넘어가며, 거의 모든 다른 기능과 연결되어 있음.
- 작은 기능 수정 하나가 연쇄적인 부작용(Side Effect)을 일으켜 테스트가 불가능함.
- 클래스 이름이
- Root Cause: 초기 설계가 부족할 때, 새로운 기능을 기존의 가장 큰 곳에 쑤셔 넣는 '게으른 개발 습관'에서 비롯됨.
- Solution: 로직을 관심사별로 쪼개어 각각의 전문 클래스로 분리하고, 이들을 조합(Composition)하는 방식으로 리팩토링해야 한다.
⚠️ 모순 및 업데이트 (Contradictions & Updates)
- 때로는 성능 최적화(캐시 히트율, 함수 호출 오버헤드 감소)를 위해 일부러 데이터를 모아두는 경우가 있으나, 이는 극히 예외적인 상황이다. 현대의 가독성과 테스트 중심 개발 환경에서 '신 객체'는 프로젝트의 수명을 갉아먹는 암적 존재로 간주된다.
🔗 지식 연결 (Graph)
- Related: Single-Responsibility-Principle (SRP) , Cohesion-and-Coupling
- Action: Refactoring-Techniques
🤖 LLM 활용 힌트 (How to Use This Knowledge)
언제 이 지식을 쓰는가:
- (TODO)
언제 쓰면 안 되는가:
- (TODO)
🧪 검증 상태 (Validation)
- 정보 상태: needs_review
- 출처 신뢰도: A
- 검토 이유: (P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)
🧬 중복 검사 (Duplicate Check)
- 기존 유사 문서: (TODO: 인덱서 클러스터 리포트 참조)
- 처리 방식: UPDATE (자동 정규화)
- 처리 이유: Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|---|---|---|---|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
💻 코드 패턴 (Code Patterns)
패턴 1: (TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)
# TODO
🤔 의사결정 기준 (Decision Criteria)
선택 A를 써야 할 때:
- (TODO)
선택 B를 써야 할 때:
- (TODO)
기본값:
(TODO)
❌ 안티패턴 (Anti-Patterns)
- [안티패턴]: (TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)