본문 바로가기
개발자

소프트웨어 개발 3대 원칙 : KISS, YAGNI, DRY

by A6K 2023. 12. 7.

고품질의 소프트웨어를 개발하기 위한 다양한 방법론들이 존재한다. 소프트웨어 공학과 관련된 책을 읽다보면 자주 언급되는 원칙들이 있다. 대표적으로 KISS, YAGNI, DRY 원칙이 있다.

KISS - Keep It Simple Stupid!

KISS 원칙은 "Keep It Simple Stupid!" 혹은 "Keep It Short and Simple", "Keep It Small and Simple"의 앞글자를 따서 만든 약어다. 설명하자면 소프트웨어의 설계나 코딩 작업에서 되도록 간단하고 단순하게 결과물을 만드는게 좋다는 의미다. 설계나 코드가 불필요하게 장황하거나 복잡해지지 않도록 주의하라는 의미다.

설계나 코드가 복잡하고 장황하다면 비즈니스 로직을 이해하기 어렵다. 그렇게 되면 주석도 덕지덕지 붙여야하고, 결과적으로는 가독성이 떨어져 생산성이 매우 떨어진다. 따라서 소프트웨어 프로젝트의 작업은 최대한 간단하고 단순할 필요가 있다.

YAGNI - You Ain't Goona Need It

YAGNI 원칙은 "You Ain't Gonna Need It"의 첫 글자를 따서 만든 약어다. 이 원칙을 설명하자면 "필요한 작업만 하라"라고 말할 수 있다. 소프트웨어를 작성하다보면 "언젠간 필요할테니 미리 만들어두자"라는 생각이 드는 경우가 많다. 현재는 사용하지 않지만 확장성을 위해서 미리 작업을 해두는 로직이나 코드들이 더러 생길 수 있다. YAGNI는 그런 작업을 하지 말라는 원칙이다.

당장쓰지 않을 코드를 작성해두는 것인 코드 베이스를 쓸데없이 장황하게 만든다. 게다가 설계가 변경되거나 실행환경이 바뀔 때 수정해야하는 코드의 양이 늘어나게 된다. 사용되지 않는 코드는 유지보수되지 않는 경우가 많고, 그곳에서부터 버그가 생겨나기 쉽다. 

따라서 당장 필요한 작업에만 집중하고 쓸데없는 작업은 하지말라는 의미다.

DRY - Do not Repeat Yourself

DRY 원칙은 "Do not Repeat Yourself"의 첫 글자를 따서 만든 약어다. 소프트웨어를 개발하면서 정보의 반복을 줄이는 것을 목표로 하라는 원칙이다. DRY 원칙은 앤디헌트와 데이비드 토마스의 실용주의 프로그래머에서 언급된 내용이다.

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system

소스코드에서 동일한 코드나 로직이 반복된다는 것은 잠재적인 버그의 위협을 증가시킨다. 반복되는 코드의 내용이나 로직이 변경되어야 하는 경우 반복되는 모든 코드에 수정이 필요하다. 이 과정에서 누락되는 등의 실수가 발생할 수 있으며, 이는 결국 소프트웨어의 버그로 이어진다.

프로젝트의 규모가 커질수록 반복되는 코드로 인한 유지보수 오버헤드가 커진다. 이 때문에 작은 프로젝트에서부터 코드의 반복을 최대한 줄이는 습관이 중요하다.

댓글