나름 유명한 내용이고, 특히 고수준 언어 주력으로 한다면 한 번 쯤 읽어두는 거 추천 함.
* SOLID Principles: Explanation and examples
여담인데, 이거 소개하면 대략 수준에 따라 반응이 갈리더라. 읽어봐도 뭔 소리인지 모르면 그냥 기초가 부족한거고, 읽어보고 "오오"하면 대략 기본은 잘 다진 정도, 그리고 "당연한 거 아님? 이 걸 굳이 외워야 함?"하면 중급 이상 쯤 되는 듯.
물론 고수준 언어 기준이라, 저수준 동네에선 어쩌면 저런 거 안중요할 수도 있음. 자바, 파이썬, C#, 자바스크립트 그런 언어들 주력으로 한다면 한 번 쯤 읽어봐라.
번역해서줘
liskov 이건 뭔소리냐 - dc App
처음 그거 만들어서 발표한 사람 이름일 걸?
이름인건 알겟는데 글을봐도 코드를 봐도 먼소린지 몰겟어서 딴 블로그까지 봤는데도 어렵네 .. - dc App
사실 저 중에서 'L'은 객체지향 정확하게 이해했다면 너무 당연한 이야기라 크게 중요하진 않다. 그냥 'is-a'관계를 좀 포멀하게 이야기하는 거라고 봐도 되고.
먼데 그게
'S'나 'O'는 설계할 때 항상 떠올리는 격언 비슷하게 생각해도 좋음. 그 만큼 도움이 되는 내용이다.
I 는 그런대 S 랑 똑같은 의미아님? 인터페이스는 뭐 다른거임? 단일적인 기능을 포함하고 있는건 똑같은 말아님? 필요함? - dc App
취지는 비슷하긴 한데, S는 모듈, 클래스 이런 구현 단위로 이야기할 법한 내용이고, I는 규약에 해당하는 인터페이스/트레잇에 적용되는 내용이란 정도 차이라고 이해한다. 예컨대 믹스인 패턴 같은 건 직접적으로 보면 'I'에 대한 이야기지만, 왜 그렇게 설계하냐 물으면 SRP 때문이라고 답할 수 있달까...
난 S나 O 같은 건 원칙(principle)에 대한 거고 I나 D는 패턴(pattern)에 가깝다고 본다.
아 ㅇㅋㅇㅋ 이론과 실제 구현에 대한이야기 같네 ㅇㅋㅇㅋ이해함 - dc App
근데 D는 패턴에 가깝다고 하니 좀 애매하긴 하네... 설계할 때 추상 계층 수준에 따라 의존 방향을 잡는 건 원칙이라면 원칙으로 봐도... 여튼 표현이 중요한 건 아님. 사상을 이해하고 자기가 코드 짤 때 적용할 수 있냐가 문제지 ㅎㅎ