개발자라면 꼭 알아야 할 3대 원칙: KISS, DRY, YAGNI 총정리
📋 목차
코딩을 하다 보면 이런 고민에 빠질 때가 있죠. '분명히 내가 짠 코드인데, 왜 나중에 다시 보면 이해가 안 가지? 😥' 혹은 '기능 하나를 수정했는데, 왜 전혀 상관없어 보이는 곳에서 버그가 터질까?'
이런 문제를 겪어보셨다면, 아마도 '좋은 코드'에 대한 고민을 시작하셨다는 뜻일 거예요. 좋은 코드는 단순히 작동하는 코드가 아니라, 읽기 쉽고, 수정하기 쉽고, 확장하기 쉬운 코드를 말합니다. 오늘은 이렇게 '좋은 코드'를 작성하기 위한 가장 기본적이면서도 강력한 세 가지 원칙, **KISS, DRY, YAGNI**에 대해 알아보겠습니다. 😊
1. KISS 원칙: "단순하게!" 🌬️
**KISS**는 "Keep It Simple, Stupid"의 줄임말입니다. 직역하면 '단순하게 유지해, 바보야!'라는 좀 과격한 말이지만, 그 속뜻은 '시스템은 최대한 단순하게 설계하고 유지해야 한다'는 것입니다.
복잡한 코드는 당장은 멋있어 보일지 몰라도, 미래의 나 자신과 동료들에게 큰 고통을 줍니다. 버그를 찾기 어렵게 만들고, 새로운 기능을 추가할 때 어디를 고쳐야 할지 알 수 없게 만들죠.
- 한 함수(메서드)는 한 가지 일만 하도록 만드세요. (단일 책임 원칙)
- 너무 많은 조건문(if-else)이나 중첩된 루프(for/while)를 피하세요.
- 누구나 이해할 수 있는 명확한 변수명과 함수명을 사용하세요.
코드를 작성할 때 '어떻게 하면 더 단순하게 이 문제를 해결할 수 있을까?'를 항상 고민하는 것이 KISS 원칙의 시작입니다.
2. DRY 원칙: "반복하지 마!" 💧
**DRY**는 "Don't Repeat Yourself", 즉 '반복하지 말라'는 원칙입니다. 개발에서 '반복'은 최악의 적 중 하나로 꼽히죠.
예를 들어, 똑같은 계산 로직이 프로그램 3곳에 복사-붙여넣기(복붙) 되어 있다고 상상해 보세요. 만약 이 로직에 문제가 생기거나 수정이 필요하다면, 3곳을 모두 찾아서 똑같이 고쳐야 합니다. 만약 한 곳이라도 빼먹는다면? 바로 버그로 이어지겠죠.
DRY 원칙은 '모든 지식(로직)은 시스템 내에서 단일하고, 명확하며, 권위 있는 표현을 가져야 한다'는 것을 의미합니다. 반복되는 코드가 있다면, 그것을 하나의 함수나 모듈로 뽑아내어 재사용해야 합니다.
DRY의 반대말은 WET입니다. WET은 'We Enjoy Typing' 또는 'Write Every Time'의 약자로, 반복을 즐긴다는 비꼬는 의미입니다. 코드를 '복붙'하고 싶은 유혹이 들 때마다 DRY 원칙을 떠올려보세요!
3. YAGNI 원칙: "필요할 때 만들자!" 🔮
**YAGNI**는 "You Ain't Gonna Need It"의 줄임말로, '너는 그것이 필요하지 않을 것이다'라는 뜻입니다.
개발자들은 종종 의욕이 앞서서 '나중에 이런 기능이 필요하지 않을까?', '미래를 대비해서 확장성을 엄청나게 높여 놔야지!'라고 생각하며 지금 당장 필요하지도 않은 기능을 미리 만들곤 합니다.
YAGNI 원칙은 바로 이런 '과도한 엔지니어링(Over-engineering)'을 경계하라고 말합니다. 당장 필요하지 않은 기능을 미리 만드는 것은 다음과 같은 문제를 일으킵니다.
- 쓸데없는 기능을 만드느라 개발 시간이 낭비됩니다.
- 코드가 불필요하게 복잡해집니다. (KISS 원칙 위반!)
- 막상 '나중'이 되었을 때, 미리 만든 기능이 요구사항과 맞지 않아 결국 버리고 새로 만들어야 할 수도 있습니다.
YAGNI 원칙은 오직 **지금 당장 필요한 가장 단순한 기능**에만 집중하라고 조언합니다. 새로운 기능은 그것이 '정말로' 필요한 시점에 추가해도 늦지 않습니다.
KISS, DRY, YAGNI 한눈에 비교하기 📊
이 세 가지 원칙은 서로 밀접하게 연결되어 있습니다. 각각을 표로 간단히 정리해 볼게요.
| 원칙 (Principle) | 핵심 의미 | 주요 목표 |
|---|---|---|
| KISS (Keep It Simple, Stupid) | 단순함이 최고다 | 복잡성↓, 가독성↑ |
| DRY (Don't Repeat Yourself) | 반복하지 마라 | 중복 코드↓, 유지보수성↑ |
| YAGNI (You Ain't Gonna Need It) | (미래에) 필요 없을 거다 | 낭비↓, 개발 속도↑ |
- YAGNI를 지켜 당장 필요한 것만 만들면, 코드가 KISS(단순)해집니다.
- 코드를 KISS(단순)하게 유지하려다 보면, 반복되는 부분을 찾기 쉬워져 DRY(반복 제거)를 적용하기 좋습니다.
마무리: 핵심 요약 📝
KISS, DRY, YAGNI는 코드를 더 깨끗하고 효율적으로 만들기 위한 훌륭한 나침반입니다. 물론 이 원칙들을 맹목적으로 따르는 것이 항상 정답은 아닐 수도 있지만, 코드를 작성하기 전에 한 번씩 이 원칙들을 되새겨보는 것만으로도 여러분의 코드는 분명 더 나은 방향으로 발전할 거예요.
개발 3대 원칙 요약
여러분은 이 세 가지 원칙 중에 어떤 원칙을 지키는 것이 가장 어렵다고 느끼시나요? 혹은 자신만의 '좋은 코드' 작성 노하우가 있다면 댓글로 공유해 주세요! 😊

댓글
댓글 쓰기