Files
2nd/10_Wiki/Topics/Architecture/God-Object-Antipattern.md
T

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
P-Reinforce-AI-GOD-OBJECT
none A 0.99
SoftwareEngineering
AntiPattern
CleanCode
Refactoring
2026-04-20 pending Claude Opus 4.7 (auto-normalize 2026-05-08)
language framework
unspecified unspecified

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: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)