Files
2nd/10_Wiki/Topics/AI/Software-Design-Principles.md
T

2.7 KiB


id: P-Reinforce-AUTO-SWDP-001 category: "10_Wiki/💡 Topics/AI" confidence_score: 0.98 tags: [auto-reinforced, software-engineering, design-Principles, clean-code, Architecture] last_reinforced: 2026-04-20

Software-Design-Principles

📌 한 줄 통찰 (The Karpathy Summary)

"코드를 예술로 바꾸는 설계 철학: 시간이 지날수록 썩어가는 코드(Code Rot)를 방지하고, 변화에 유연하며 유지보수가 즐거워지는 견고한 아키텍처의 황금률."

📖 구조화된 지식 (Synthesized Content)

소프트웨어 설계 원칙(Software Design Principles)은 소프트웨어의 품질, 가독성, 유지보수성을 극대화하기 위해 개발자들이 지켜야 할 일련의 규칙과 지침입니다.

  1. SOLID 원칙 (The Pillar):
    • SRP (단일 책임): 하나의 클래스는 하나의 책임만 가져야 함.
    • OCP (개방-폐쇄): 확정에는 열려 있고, 수정에는 닫혀 있어야 함.
    • LSP (리스코프 치환): 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 함.
    • ISP (인터페이스 분리): 명확한 목적의 작은 인터페이스들로 쪼개야 함.
    • DIP (의존 역전): 구체적인 것이 아니라 추상적인 것에 의존해야 함.
  2. 핵심 철학:
    • DRY (Don't Repeat Yourself): 코드 중복 제거.
    • KISS (Keep It Simple, Stupid): 단순함이 복잡함을 이긴다.
    • YAGNI (You Ain't Gonna Need It): 미리 예측해서 불필요한 기능 만들지 않기.
    • Encapsulation: 내부 데이터와 로직을 숨겨 파급 효과 최소화.
  3. 효과:
    • 기술 부채(Technical Debt) 감소, 팀 간 협업 효율 증대, 버그 발생률 급감.

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

  • 과거 데이터와의 충돌: 과거에는 '완벽한 초기 설계'를 지향했으나, 현대 소프트웨어 정책은 빠른 배포 후 리팩토링(Refactoring)을 장려하는 '점진적 진화형 아키텍처' 정책으로 전환됨(RL Update).
  • 정책 변화(RL Update): AI 코딩 어시스턴트의 보급에 따라, "AI가 쓴 코드가 설계 원칙을 준수했는가"를 자동으로 검증하는 'AI 코드 거버넌스 및 린팅 정책'이 필수 개발 인프라로 자리 잡음.

🔗 지식 연결 (Graph)