Files
2nd/00_Raw/YAGNI Principle.md
T

3.0 KiB

YAGNI Principle

📌 Brief Summary

YAGNI는 "You Aren't Gonna Need It"의 약자로, 개발자가 미래에 필요할지도 모른다고 추측하여 복잡한 기능을 미리 구축하는 것을 피하라는 소프트웨어 설계 원칙입니다[1, 2]. 이 원칙은 오직 현재의 요구사항에만 집중함으로써 유지보수해야 할 데드 코드(dead code)와 복잡성을 최소화하는 데 목적이 있습니다[1]. 특히 요구사항이 자주 변경되는 애자일(Agile) 환경이나 스타트업 프로젝트에서 매우 중요하게 다뤄집니다[1, 3].

📖 Core Content

  • 핵심 개념 및 도입 이유: YAGNI의 핵심은 "정말로 필요해지기 전까지는 기능을 추가하지 말라"는 것입니다[2]. 언젠가 쓰일지도 모른다는 이유로 추가 기능을 작성하게 되면 코드를 작성하는 시간만 낭비될 뿐만 아니라, 결국 해당 기능이 필요 없어지거나 요구사항이 변경될 가능성이 큽니다[4]. 따라서 개발자는 현재 당장 필요한 기능만 구현하여 불필요한 기술 부채(tech debt)와 잉여 코드를 줄여야 합니다[5].

  • React 환경에서의 적용 (YAGNI in React): React 컴포넌트를 설계할 때도 YAGNI 원칙을 통해 코드를 간결하게 유지할 수 있습니다. 컴포넌트는 오늘 당장 필요한 것만 구현하고 확장은 나중으로 미뤄야 합니다[3].

    • 예를 들어 현재 날짜의 원시 데이터(raw date)만 필요한 상황이라면, 나중에 쓰일 것 같다는 이유로 날짜 포맷팅 함수를 미리 추가하지 말아야 합니다[2].
    • 마찬가지로 <UserProfile /> 컴포넌트가 현재 사용자 정보(user)만 필요로 한다면, 아직 화면에 쓰이지 않는 userSettingsuserPosts 같은 여분의 props를 선제적으로 넘겨주거나 구현하지 않는 것이 좋은 사례입니다[3].
  • 장단점(Trade-offs) 및 최적의 사용 환경:

    • 장점: 낭비되는 개발 노력을 줄여주고 코드베이스를 가볍게 유지할 수 있습니다[6]. 코드 자체가 부채가 되는 상황을 방지하고 불필요한 부분을 제거하는 리팩토링의 훌륭한 기준이 됩니다[5].
    • 단점: 미래의 확장성(future scalability)을 간과하게 될 위험성도 내포하고 있습니다[6].
    • 사용 환경: 요구사항이 계속해서 변화하는 스타트업 프로젝트나 빠른 릴리스가 중요한 애자일 개발 환경에서 사용하는 것이 가장 적합합니다[3].

🔗 Knowledge Connections


Last updated: 2026-04-26