개발이야기/기타

SOLID, DRY, KISS AND YAGNI

쪼린이 2021. 7. 7. 14:07

여느 때와 다름없이 유튜브에서 유영하던 중에 DRY, KISS, YAGNI에 대한 영상을 보았다.

저 세가지 단어를 키워드로 검색하던 중 SOLID를 알게되어 아주 간략하게나마 정리해보려고 한다.

SOLID

객체지향 프로그래밍 및 설계의 5원칙으로서 위키백과에서 찾아보면 다음과 같이 설명하고 있다.

두문자 약어 개념
S SRP 단일 책임 원칙(Single responsibility principle)
한 클래스는 하나의 책임만 가져야 한다.
O OCP 개방-폐쇄의 원칙(Open/closed principle)
소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
L LSP 리스코프 치환 원칙(Liskov substitution principle)
"프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다."
계약에 의한 설계를 참고하라.
I ISP 인터페이스 분리 원칙(Interface segregation principle)
"특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다."
D DIP 의존관계 역전 원칙(Dependency inversion principle)
프로그래머는 "추상화에 의존해야지 ,구체화에 의존하면 안된다."
의존성 주입은 이 원칙을 따르는 방법 중 하나다.

여기서 리스코프 치환 원칙이 이해가 잘 안돼서 찾아봤는데 대표적인 예가 Square와 Rectangle이었다.

설명을 들었는데도 좀 어려워서 이해될 때까지 지속적으로 찾아봐야할 것 같다.

 

참고 👇
https://www.youtube.com/watch?v=dJQMqNOC4Pc
https://stackify.com/solid-design-liskov-substitution-principle/

 

DRY, KISS and YAGNI

위의 세 가지는 개발 시 참고할 원칙들이다.

 

DRY - Dont' Repeat Yourself

모든 형태의 중복을 지양하는 원리이다. 중복배제 원리는 한마디로 “모든 지식은 시스템 내에서 유일하고 중복이 없으며 권위있는 표상만을 가진다”는 말로 기술할 수 있다.

 

KISS - Keep It Simple, Stupid (혹은 Keep It Short and Simple)

간단하고 심플하게, 알기 쉽게 만드는 편이 좋다.

 

YAGNI - You Ain't Gonna Need It

프로그래머가 필요하다고 간주할 때까지 기능을 추가하지 않는 것이 좋다는 익스트림 프로그래밍(XP)의 원칙이다.

"실제로 필요할 때 무조건 구현하되, 그저 필요할 것이라고 예상할 때에는 절대 구현하지 말라."

 

개발원칙의 정의는 위키백과를 참고 하였음
처음 접한 유튜브는 여기👇
https://www.youtube.com/watch?v=jafa3cqoAVM

 

프로젝트를 하다보면 레거시 코드를 마주할 때가 있는데, 초보 개발자 입장에서 정말 분석하기 난해한 경우가 많았다.

앞으로 코드의 확장성이나 중복성 배제, 유지보수의 용이성을 위하여 위의 원칙들을 염두에 두고 개발해야겠다.