Search

Search through articles and snippets by title, tags, or content.

Back to Articles
클린 코드를 위한 필살기: 소프트웨어 개발 3대 원칙 (KISS, YAGNI, DRY) 완벽 가이드
DevCleanCodeSoftwareEngineeringDesignPrinciples

클린 코드를 위한 필살기: 소프트웨어 개발 3대 원칙 (KISS, YAGNI, DRY) 완벽 가이드

단순함의 미학 KISS부터 미래를 예측하지 않는 YAGNI, 중복을 거부하는 DRY까지. 더 나은 코드를 작성하기 위한 핵심 원칙 3가지를 살펴봅니다.

D
DevBlog
Mar 8, 2026
5 min read

들어가며: 왜 원칙이 필요할까요?

개발을 하다 보면 어느 순간 코드가 스파게티처럼 꼬여 손대기 무서워지는 시점이 옵니다. 처음에 빠르게 기능을 구현하는 데만 집중했기 때문이죠. 하지만 좋은 소프트웨어는 '변경하기 쉬운 코드' 여야 합니다.

오늘은 복잡성을 제어하고 협업 효율을 높여주는 전설적인 3대 개발 원칙, KISS, YAGNI, DRY 에 대해 알아보겠습니다.


1. KISS (Keep It Simple, Stupid)

"단순하게 유지해, 이 바보야!"

KISS 원칙은 어떤 시스템이든 단순할 때 가장 잘 작동하며, 불필요한 복잡성은 피해야 한다는 원칙입니다.

  • 핵심: 해결책이 너무 화려하거나 복잡하다면, 다시 생각해보세요.
  • 실천법:
    • 하나의 함수는 하나의 기능만 수행하도록 작게 만듭니다.
    • 지나치게 고도화된 디자인 패턴 적용을 경계합니다.
    • 누가 봐도 한눈에 이해할 수 있는 직관적인 코드를 작성합니다.

Tip: 코드가 똑똑해 보이기보다, 읽기 편한 것이 훨씬 가치 있습니다.


2. YAGNI (You Ain't Gonna Need It)

"그거 나중에 안 쓸걸요?"

YAGNI는 "정말 필요할 때가 되기 전까지는 기능을 추가하지 마라"는 원칙입니다. 개발자 특유의 '미래를 대비한 오버 엔지니어링'을 경계합니다.

  • 핵심: 현재 명확하게 요구되지 않은 기능을 미리 구현하지 마세요.
  • 실천법:
    • "나중에 이런 기능이 필요할지도 몰라"라는 가정하에 코드를 짜지 않습니다.
    • 사용되지 않는 코드나 주석 처리된 코드는 과감히 삭제합니다.
    • 미래의 유연성보다는 현재의 정확성에 집중합니다.

3. DRY (Don't Repeat Yourself)

"반복하지 마세요"

DRY 원칙은 "모든 지식 조각은 시스템 내에서 단 한 번만 표현되어야 한다"는 원칙입니다. 흔히 말하는 중복 제거 의 핵심이죠.

  • 핵심: 같은 로직이 두 번 이상 나타난다면 공통화(Abstraction)를 고려하세요.
  • 실천법:
    • 반복되는 로직은 함수나 클래스로 분리합니다.
    • 하드코딩된 값은 상수로 관리합니다.
    • 데이터베이스 스키마나 설정값이 여러 곳에서 중복 정의되지 않도록 주의합니다.
// BAD: 중복된 로직 (WET - Write Everything Twice)
function calculateCircleArea(radius) {
  return 3.14159 * radius * radius;
}
 
function calculateCylinderVolume(radius, height) {
  return 3.14159 * radius * radius * height;
}
 
// GOOD: DRY 원칙 적용
const PI = 3.14159;
 
function getCircleArea(radius) {
  return PI * radius * radius;
}
 
function getCylinderVolume(radius, height) {
  return getCircleArea(radius) * height;
}

주석: 위 예시처럼 공통된 원 넓이 계산 로직을 분리하면, 나중에 PI 값을 수정해야 할 때 한 곳만 고치면 됩니다.


결론: 균형이 제일 중요합니다

이 원칙들은 절대적인 법은 아닙니다. 예를 들어, DRY를 너무 엄격하게 지키려다 오히려 코드 간의 의존성이 높아져 가독성이 떨어지는 경우도 발생하죠.

  • KISS 로 단순함을 유지하고,
  • YAGNI 로 불필요한 낭비를 줄이며,
  • DRY로 코드의 일관성을 확보하세요.

이 세 가지 균형을 잘 잡는다면, 여러분의 코드는 시간이 지나도 빛을 발할 것입니다. 오늘 작성한 코드는 이 원칙들을 잘 지키고 있나요?

Comments