kui-vault/02.Volume/CleanCode/코딩 원칙 (YAGNI, KISS, DRY).md

2.8 KiB

id created tags
코딩 원칙 (YAGNI, KISS, DRY) 20260330 2026-03-30 14:52

코드의 단순함을 지키기 위해 필요한 원칙 3가지 이 3가지를 지키다 보면 단순한 코드에 한걸음 더 다가갈 수 있게 된다.

  1. YAGNI(You Ain't Gonna Need It)
  2. KISS (Keep It Simple, Stupid)
  3. DRY (Don't Repeat Yourself)

[!warning] 위의 세 원칙을 지키는 것이 중요하긴 하지만

가장 중요한 것은 하나의 원칙을 지키기 위해서 다른 원칙을 어기면 안된다.

💡 생각

결국, 코드를 단순하게 작성하고 가독성을 중시해야 하며 코드를 최초로 작성하는 경우에는 꼭 필요한 기능이 아니라면 다음에 작성하는 게 좋고 코드의 반복이 3번이상 있을 경우에는 DRY의 원칙을 지키는 것을 고려해야 한다.

불필요한 작업을 줄여서 (YAGNI(You Ain't Gonna Need It)) 비용 절감을 중시하고, 단순한 코드를 작성해서 (KISS (Keep It Simple, Stupid)) 가독성을 높이고, 중복되는 코드를 줄여서 (DRY (Don't Repeat Yourself)) 유지보수성을 늘리자.

결국 세 원칙 모두 프로젝트 비용을 줄이는데에 초점이 맞춰져 있는 원칙들이다.


[!note] YAGNI > KISS > DRY

: 지금 이 코드가 정말로 필요한가? YAGNI(You Ain't Gonna Need It) 원칙을 지키다 보면 대부분의 불필요한 복잡성이 걸러짐.
YAGNI(You Ain't Gonna Need It) 통과해서 작성이 필요하다고 판단되는 코드의 경우 KISS (Keep It Simple, Stupid)원칙을 지키면서 코드를 작성한다.
KISS (Keep It Simple, Stupid)한 코드를 작성하고 나서 DRY (Don't Repeat Yourself)한지 판단해본다. 여기서 중요한건 DRY한 코드를 만들기 위해 KISS하지 않은 코드를 작성하면 안된다는 것이다.

왜 이 순서가 최강의 전략일까요?

많은 개발자가 DRY를 1순위로 두는 실수를 범합니다. 중복을 없애려고 너무 일찍부터 복잡한 추상화를 시작하면, 결국 쓰지도 않을 기능(YAGNI 위반)을 위해 이해하기 힘든 코드(KISS 위반)를 만들게 되거든요.

정리하신 대로 YAGNI → KISS → DRY 순으로 사고하면, 자연스럽게 비용은 낮고 가동성은 높은 결과물이 나옵니다.


비용(Cost) 중심의 사고방식

지적하신 대로 이 모든 원칙의 종착역은 비용 절감입니다.

  • YAGNI: '만드느라 드는 시간'과 '유지보수하는 시간'의 낭비를 막아 직접적인 비용을 줄입니다.

  • KISS: 코드를 읽고 이해하는 데 드는 '뇌의 연산 비용'을 줄여서 커뮤니케이션 비용을 낮춥니다.

  • DRY: 수정할 때 여러 곳을 고치다 실수하는 '버그 수정 비용'을 줄여서 운영 비용을 아낍니다.