SOLID, DRY, KISS AND YAGNI
여느 때와 다름없이 유튜브에서 유영하던 중에 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
프로젝트를 하다보면 레거시 코드를 마주할 때가 있는데, 초보 개발자 입장에서 정말 분석하기 난해한 경우가 많았다.
앞으로 코드의 확장성이나 중복성 배제, 유지보수의 용이성을 위하여 위의 원칙들을 염두에 두고 개발해야겠다.