DRY
•
Don’t Repeat Yourself
◦
똑같은 일을 두번하지 말자.
◦
중복되는 함수나 코드는 하나의 공통된 클래스에 넣어두자.
◦
큰 시스템을 여러 클래스로 나누어 설계하고 서로 참조하는 식으로 구현하자.
•
시스템이 소규모일때는 복잡도가 크지 않기 때문에 프로그램을 이해하기가 수월한 반면 시스템이 커지고 개념도 많아지면 복잡도가 기하급수적으로 높아지게 된다.
•
이런 시스템에서 복잡도를 최대한 줄여야 개발 및 유지보수 시 용이하다.
•
이를 위반할 경우는 WET이라고 부르는데, We Enjoy Typing 또는 Write Everything Twice를 의미한다.
KISS
•
Keep It Simple, Stupid
◦
단순하게 하라
•
소프트웨어 설계를 간단하고 단순하게 하라는 것이다.
•
즉, 큰 프로젝트를 단순하게 설계하지 못하고 복잡하게하는 것은 프로젝트를 제대로 이해하지 못했다는 증거다.
•
우리가 완전하게 이해한 내용들은 입에서 술술 나오듯이 먼저 프로젝트에 대한 기반 배경와 목적성들을 잘 이해하고 어떻게 해야 구현을 단순화할 수 있을지 고민해야 한다.
YAGNI
•
You Ain’t Gonna Need It
◦
정말 필요할 때까지 기능을 만들지 말고 지켜보자.
•
현재 필요하지 않지만 추후에 확장될 가능성에 미리 대비해서 함수나 코드를 작성하지 않아야 한다.
•
지금 필요한 기능만 작성하지 않으면 코드가 길어지고 추상적이게 되기 때문에 이해하는 것이 어려워진다.