Files
2nd/10_Wiki/Topics_Biz/Engineering_Principles.md
T

3.3 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d 10_Wiki/Topics/Development 0.99
engineering-principles
solid
dry
kiss
yagni
clean-code
software-engineering
2026-05-01 wikification-engineering-principles

Engineering Principles (SOLID, DRY, KISS, YAGNI)

📌 한 줄 통찰 (The Karpathy Summary)

소프트웨어 엔지니어링의 핵심 원칙들은 코드의 복잡성을 통제하고 유지보수성을 극대화하기 위한 도구이며, 특히 SOLID와 DRY/KISS/YAGNI는 '단순함'과 '유연함' 사이의 최적의 균형점을 찾기 위한 지침이다.

📖 구조화된 지식 (Synthesized Content)

1. SOLID 원칙 (Object-Oriented Design)

  • SRP (단일 책임 원칙): 하나의 모듈/컴포넌트는 오직 하나의 책임(변경 이유)만 가져야 한다. React에서는 거대한 컴포넌트를 기능별로 쪼개는 핵심 근거가 된다.
  • OCP (개방-폐쇄 원칙): 확장에는 열려 있고 수정에는 닫혀 있어야 한다. 컴포넌트 합성을 통해 기존 코드를 건드리지 않고 기능을 확장한다.
  • LSP (리스코프 치환 원칙): 자식 클래스(또는 서브 컴포넌트)는 부모의 역할을 온전히 수행할 수 있어야 한다.
  • ISP (인터페이스 분리 원칙): 사용하지 않는 인터페이스(Props)에 의존하지 않도록 잘게 쪼갠다.
  • DIP (의존성 역전 원칙): 구체적인 구현이 아닌 추상화에 의존하여 결합도를 낮춘다.

2. Pragmatic Principles (DRY, KISS, YAGNI)

  • DRY (Don't Repeat Yourself): 지식의 중복을 피한다. 반복되는 로직은 커스텀 훅이나 유틸리티로 추출한다.
  • KISS (Keep It Simple, Stupid): 단순함이 궁극의 정교함이다. 과도한 추상화보다 직관적인 코드를 우선한다.
  • YAGNI (You Aren't Gonna Need It): 실제로 필요하기 전까지는 기능을 미리 구현하지 않는다. 미래를 대비한 오버엔지니어링을 경계한다.

3. Clean Code 실무

  • 가독성 우선: 코드는 컴퓨터가 읽기 위함이 아니라 사람이 읽기 위해 작성된다. 명확한 변수명과 함수 크기 조절이 필수적이다.
  • 단위 테스트 가능성: 원칙을 준수한 코드는 자연스럽게 테스트하기 쉬운(Testable) 구조가 된다.

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • DRY vs KISS: 중복을 제거하기 위한 무리한 추상화는 코드를 더 이해하기 어렵게 만든다. '세 번 반복될 때까지 기다리기(Rule of Three)'가 좋은 절충안이다.
  • YAGNI vs 확장성: 미래를 무시하는 것과 유연한 구조를 설계하는 것은 다르다. YAGNI는 '기능'에 대한 것이고, SOLID는 '구조'에 대한 것이다.

🔗 지식 연결 (Graph)

💻 GitHub 동기화 자동화 워크플로우

  1. Stage: git add .
  2. Commit: git commit -m "[P-Reinforce] Wikify Core Engineering Principles (SOLID, DRY, KISS, YAGNI)"
  3. Push: git push origin main