Search
Duplicate
👓

DRY, KISS, YAGNI

DRY

Don’t Repeat Yourself
똑같은 일을 두번하지 말자.
중복되는 함수나 코드는 하나의 공통된 클래스에 넣어두자.
큰 시스템을 여러 클래스로 나누어 설계하고 서로 참조하는 식으로 구현하자.
시스템이 소규모일때는 복잡도가 크지 않기 때문에 프로그램을 이해하기가 수월한 반면 시스템이 커지고 개념도 많아지면 복잡도가 기하급수적으로 높아지게 된다.
이런 시스템에서 복잡도를 최대한 줄여야 개발 및 유지보수 시 용이하다.
이를 위반할 경우는 WET이라고 부르는데, We Enjoy Typing 또는 Write Everything Twice를 의미한다.

KISS

Keep It Simple, Stupid
단순하게 하라
소프트웨어 설계를 간단하고 단순하게 하라는 것이다.
즉, 큰 프로젝트를 단순하게 설계하지 못하고 복잡하게하는 것은 프로젝트를 제대로 이해하지 못했다는 증거다.
우리가 완전하게 이해한 내용들은 입에서 술술 나오듯이 먼저 프로젝트에 대한 기반 배경와 목적성들을 잘 이해하고 어떻게 해야 구현을 단순화할 수 있을지 고민해야 한다.

YAGNI

You Ain’t Gonna Need It
정말 필요할 때까지 기능을 만들지 말고 지켜보자.
현재 필요하지 않지만 추후에 확장될 가능성에 미리 대비해서 함수나 코드를 작성하지 않아야 한다.
지금 필요한 기능만 작성하지 않으면 코드가 길어지고 추상적이게 되기 때문에 이해하는 것이 어려워진다.