3.0 KiB
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)만 필요로 한다면, 아직 화면에 쓰이지 않는userSettings나userPosts같은 여분의 props를 선제적으로 넘겨주거나 구현하지 않는 것이 좋은 사례입니다[3].
-
장단점(Trade-offs) 및 최적의 사용 환경:
- 장점: 낭비되는 개발 노력을 줄여주고 코드베이스를 가볍게 유지할 수 있습니다[6]. 코드 자체가 부채가 되는 상황을 방지하고 불필요한 부분을 제거하는 리팩토링의 훌륭한 기준이 됩니다[5].
- 단점: 미래의 확장성(future scalability)을 간과하게 될 위험성도 내포하고 있습니다[6].
- 사용 환경: 요구사항이 계속해서 변화하는 스타트업 프로젝트나 빠른 릴리스가 중요한 애자일 개발 환경에서 사용하는 것이 가장 적합합니다[3].
🔗 Knowledge Connections
- Related Topics: KISS Principle, DRY Principle, Clean Code, Refactoring
- Projects/Contexts: React Component Design, Agile Development, Startup Projects
- Contradictions/Notes: YAGNI 원칙은 불필요한 노력의 낭비를 막아주지만, 미래의 확장성을 고려하지 못하게 만들 수 있다는 점이 단점으로 지적되므로 설계 시 균형을 잡는 것이 필요합니다[6].
Last updated: 2026-04-26