객체 지향 프로그래밍(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
'프로그래밍 이야기' 카테고리의 다른 글
A Tour of C++ : 옮긴이의 말 (0) | 2019.10.06 |
---|---|
Google Apps Script 제한(Limit) 내용 정리 (0) | 2019.08.16 |
프로그래밍, 구현이 더 중요? 설계가 더 중요? (0) | 2019.05.20 |
파이썬(Python), 가지고 놀기 첫걸음 (0) | 2019.04.24 |
게임 프로그래밍을 잘 하면 팀에서 가장 이득을 보는 사람은? (0) | 2019.04.16 |
객체 지향 프로그래밍? 객체 위주 프로그래밍 (0) | 2019.04.10 |
(게임)프로그래밍 카테고리 신설 (0) | 2019.04.10 |