프로그래밍 이야기

프로그래밍, OOP 설계 원칙 SOLID

원생계 2019. 4. 30. 01:37

© vishnurnair, 출처 Unsplash

 

객체 지향 프로그래밍(OOP) 언어로 프로그래밍을 시작했고, 여전히 OOP로 코딩하면서 게임을 개발하고 있습니다. 이런 패러다임을 바꿀 만큼의 더 큰 범주의 고민은 내공이 부족해서 잘 모르겠습니다. 다만, 앞으로도 최소 10년 이상은 OOP로 게임을 개발할 것 같습니다.

그러려면, 오래됐지만 여전히 효과적이고 옳은 길을 제시하고 있는 OOP의 설계 원칙들에 대해서도 한 번씩은 공부해야 할 가치가 있다고 봅니다. 형식적으로 원칙을 따져가며 지키는 것도 문제가 될 수 있지만, 무지로 인해 원칙을 무시하고 짠 프로그램은 결코 좋은 설계가 될 수 없다고 생각합니다.

S.O.L.I.D 직역하면 "단단한", "견고한"의 뜻을 가집니다. 아마도 선배 프로그래머들이 "단단하고 견고한 프로그래밍"을 하라는 의미에서 이런 원칙을 만들지 않았나 추정해봅니다.

SOLID는 다섯 가지 원칙의 제일 첫 번째 영어 철자 하나씩을 가져다 붙인 단어입니다.

1. Single Responsibility (단일 책임의 원칙)

2. Open / Close (개방 / 폐쇄의 원칙)

3. Liskov's Substitution (리스코프 치환의 원칙)

4. Interface Segregation (인터페이스 분리의 원칙)

5. Dependency Inversion (의존성 주입의 원칙)

각 항목들이 쉽게 와닿지는 않는 원칙 이름들입니다. 저도 이 원칙들에 대한 가치를 아직도 모두 이해하고 있지는 못합니다. 다만, 이 원칙들이 말하고자 하는 가치를 가능한 따라가려고 노력할수록, 좀 더 좋은 설계와 좋은 디자인으로 프로그래밍을 할 수 있었다는 걸 경험으로 기억하고 있습니다.

즉, "이 원칙들을 지키지 못하면 설계가 구려!"라고 말하기보다는, "가능한 만큼 원칙들의 가치를 따라갈수록, 변화와 확장에 유연하고 견고하고 안정적으로 동작하는 프로그램을 개발할 수 있다"라고 말하고 싶습니다. 그래서 이런 원칙을 모르는 체로 설계하는 것은 지양하고, 가급적 가치를 이해한 뒤에 현실적인 상황을 고려하며 효율적인 코딩을 하는 것이 옳다고 하고 싶습니다.

아래는 1번, "단일 책임 원칙"에 대해 잘 작성된 아티클의 한글 번역문 링크입니다. 연관 링크로 다른 원칙들에 대한 아티클들도 올라와있습니다. 다만, 한글 번역된 것은 1번 원칙에 대한 것 뿐이라서 다른 원칙들에 대한 설명은 번역기의 도움을 받아야겠네요.

댓글을 보면 아시겠지만, 많은 분들이 SOLID 원칙에 대해 잘 설명된 글이라는 칭찬이 많습니다. 저도 다시 한 번 읽어보면서 좋은 참고가 될 수 있을 것 같습니다.

https://code.tutsplus.com/ko/tutorials/solid-part-1-the-single-responsibility-principle--net-36074

 

SOLID: 1부 - 단일 책임 원칙

단일 책임(SRP; Single Responsibility), 개방/폐쇄(Open/Close), 리스코프 치환(Liskov's Substitution), 인터페이스 분리(Interface Segregation), 의존성 주입(Dependency Inversion). 코드를 작성할 때마다 여러분을 안내해줄 다섯 가지 애자일 원칙. 정의 클래스를...

code.tutsplus.com

 

 

728x90
반응형