사실
OCP,ISP,DIP,LSP는 진짜 딱 정해서 이거다 말할 수 있는거 같은데
OOP의 핵심인 SRP는
단일 책임이고, 여기서 책임은 특정기능의 변경에 대해서 단일하게 해야하는데, 이 단일한 책임이라는 것이 결국 팀내 합의에 의해서 만들어지는 느낌
그래서 진짜 존나 궁금해서 엘런케이가 스몰토크 관련해서 쓴 글이랑 OOP 관련된 객체 지향 개념 설립자의 이야기를 봤는데
메시징, 캡슐화, 동작 바인딩 이라고 인터뷰했던데 생각해보면 우리가 SOLID라고 말했던 원칙은 원 객체지향자가 창안한 개념이 아니라 후대에 덧붙여진 개념.
결국 OOP의 엄격한 정의는 아무데도 없음.
OOP의 시작 자체는 변수 할당을 결합한 기법이고, 특정 상태 변수를 해당 함수 호출(this 키워드)에 바인딩한 함수 모음을 호출하는 것이 시작이었다고 하던데...
그럼 OOP는 무엇이냐. 라고 물어보면 항상 나오는 대답이
저 5원칙 이야기(SOLID)인데 사실 이것도 후대에 덧붙여진것도 이것도 SRP에 대해서 여전히 어느정도의 모호성이 있음 .공리로 정리된게 아니라서
SOLID는 후세에 로버트 마틴이 제안한 가이드 라인인데, OOP의 가이드라인인데,
이게 수학처럼 '엄밀한' 공리로 작동하는게 아닌 그냥 일종의 사례임
~~이렇게 하면 좋겠다라는거. 결국 우리가 생각하는 단일 책임 원칙은 모호함.
사실 객체 간의 상호작용은 특정 메서드라는 하위 루틴을 통해 정리되며, 객체의 모듈성은 다른 애플리케이션간의 이전성을 이야기
라고 나는 보고 있긴한데
이것도 결국은 엄밀한 내용은 아닌듯
그래서 이런 '지향'에 대한 개념을 찾아봤는데, 실제로는 일정의 구분이고 사람들간에 쓰이는 일종의 사회적 약속임
그래서 혹자는 OOP가 완전히 구현되지 못했지만 이러한 개념이 언어의 이념을 주도한다고 하더라.
그런면에서 봤을때 결국 어떤 관점이나 이런것을 참고만 하면되지 현재 개념만 존재하는 것을 완전히 구현하겠다고 애쓰는게 병신같이 느껴질때가 있음
일단은 기본적으로 OOP 스러운 코드를 쓸때, 나는 책임의 범위부터 상정하는데 이게 제일 지루하고 힘든 작업인듯
그래서 가끔 OOP라는 걸 설명해보라 라고 하면 나는 좀 당황스러움
명확한 정답은
'엘런 케이는 메시징, 캡슐화,동적 바인딩이라고 말했지만, 아직 완성된 실제 구현 사례는 없고, 개념만 존재하는 것' 이라고 말할 수 있고
결국 OOP 패러다임이란 공리와 정의의 모음이 아닌
기본적으로 책임 범위와 역할분담에 대한 명확한 합의가 필요한
유연한 설계 철학임이 분명한데
마치 이걸 하나의 무조건 지켜야하는 철칙이라는 개념으로 이야기하니까 마찰이 일어나는게 아닐까
이렇게 말하면 나보고 다들 병신이라고 하니까
참 어려운 문제임
애초에 스프링 쓰면 저거 생각할필요가 업승
ㄹㅇㅋㅋ 그냥 쓰란대로 써서 고인물되면 그만인데 ㅋㅋ
흠., 넌 이해를 못한다 이걸 고인물이라 받아들이네
걍 있는 프레임워크 라이브러리 써서 밥벌어먹으면 된다는데 고인물이라 받아들이네~ 이딴씹소리하는거보니까 국비 6개월이실듯 ㅇㅅㅇ
몬말인지 모르겠다
이딴 병신같은생각 할시간에 api하나 더짤듯
그래서 이게 도움됨?
병신소리하네
그냥 씨플플 자바가 객체지향의 법이 되어버린거 같기도 한데 무슨 광신도처럼 교조적으로 객체지향을 정의하고 거기에 끼워맞추기보단 조직 문화에 맞춰서 편한대로 하는게 맞는듯. - dc App
동의함
이런 유익한 글을 받아들이기에 프갤의 수준이 너무 낮다
뭐든 필요에 맞게 사용하고 이를 위한 식견을 가지는게 중요한것 같다 프로그래밍에 어떤문제에 대한 해답이있을뿐 정답은 없다고 생각함 - dc App
면접때 이런소리하면 광탈 vs 오 있어보이노
사실 이대답 예전에 면접으로 봤는데 떨어짐
단일 책임 원칙 = 단일 기능 x 단일 액터 o 이렇게 봤을 때 DDD나 도메인 기능기반으로 딱 나눠 떨어지긴함 결국에는 어디서부터 어디까지 정해야하는지 문제임ㅁ
이딴거 생각하고 있는거자체가 취준생
예비창업자야
진짜 멋지다..
지식이 멋진 게 아니라 ㅄ같이 알면서도 이렇게 긴 글 싸지를 수 있는 여유와 용기가 멋지다
srp가 어떻게 oop의 핵심이냐 병신아
oop없이도 srp 지키면서 프로그래밍 할 수 있고, oop 하면서도 얼마든지 srp 어기면서 프로그래밍 할 수 있는데
그건 보통 모듈화가 무너짐. 기본적으로 SRP가 안 지켜진다-> 클래스가 여러 책임을 가진다->모듈화 부족인데 뭔 ㅋㅋ
애초에 이거 20년도에 마틴이 다시한번 강조한게 SRP임
https://speakerdeck.com/tastapod/why-every-element-of-solid-is-wrong?slide=4 애초에 이거 해외에서 17년도에 나왔던거고 이때문에 심플 코드로 대체 되야한다는 개념이라고 나온건데 얘는 뭐 이상하게 알고있노
https://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html 마틴 답장봐라
가끔은 좀 이런 해외 기조 메타 이런 레퍼런스를 좀 참조하고 살아라 한국이라는 좁은 우물에서만 깝싸대지 말고 말하는 꼬라지보니 못배워먹은 새끼같은대ㅔ
?? 여기 어디 그런말이 있음?
ㅋㅋ 아무 링크나 주면서 근거 있는 척 하는 건 어디서 배움??
개웃기네 진짜 ㅋㅋㅋㅋ
병신아 니는 principle 이라는 표현이 가지는 무게성도 모르면서 개좆도 아는척 하는 새끼에 불과함
아 ㅋㅋㅋ 진짜 미안한데 걍 니말이 다 맞다고 쳐라 내가 잘못함 ㅎㅎ
principle은 과학에서 원칙으로 번역됨. 애초에 OOP 하면서 SOLID 원칙 안 지킬 수 있다라고 적었던 레퍼런스가 17년도에 반향을 일으킴 ㅇㅋ? 이 논쟁이 꽤 있었고, 문제는 여기서도 중요한 논의가 SRP 관련이었고, 여기서 본문에도 말했지만 메시징, 캡슐화,동적 바인딩을 개체 지향이라고 정의했다고 말했지만 실제로 후세에는 SOLID를 원칙으로 한다는거임
ㅋㅋㅋㅋㅋ 진자 요즘 백수들 개웃기긴하네
당연히 내 말이 맞지 니가 principle이라는 것도 모르는 새끼인데 병신임?
아니 대체 제일 이해가 안가는게 예시나 어떤것도 없이 내 말이 맞다하는게 이해가 안됨. 니 말에 맞는 정의를 하나 가져와보셈
Design Principles and Design Patterns 2000에서 나오고 나서 꾸준히 쓰였는데 뭔 딴세계임 OOP하면서 SRP를 지키는 사례를 너가 말해줬음 좋겠는데 니 말이 맞다 치자
앜ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아니 링크는 도대체 뭐임 근데 ㅋㅋㅋㅋㅋㅋ 오히려 니 주장에 반박이 되는 내용들인데? 니 읽어는보고 가져오는거임? 내가 너잖아? 어느 부분이 잘못됐냐고 물어보고 하나라도 더 배울 것 같음 그런게 안되니까 dc에서 아는 척이나 하고 있겠지만 ㅋㅋ
링크가 진짜 배째네 자세히 보니까 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅇㅇ 좋아 그럼 뭐가 잘못됐는지 반박해서 알려주셈 1. https://speakerdeck.com/tastapod/why-every-element-of-solid-is-wrong?slide=4 이거 보면 알다시피 해외에서 17년도에 SOLID 원칙은 낡았다고 하고 , SOLIDE 원칙 없이도 OOP 할 수 있다는 반박임. 그래서 그냥 심플하게 써라 이거고 2. https://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html 하지만 보면 SOLID 원칙 주창자가 말했듯이 기본적으로 SRP는 지켜져야한다라고 말함. 자, 그럼 니 반박은 대체 뭔데 궁금해서 물어봄. 니 말이 맞으면 내가 사과할 용의가 있음
1.링크를 보면 알다시피 본문글에 부합하게 SOLID 원칙에서 SRP랑 다른 원칙들에 의문을 가지는거임 2. 그걸 원작자가 반박하는게 2번쨰고 근데 그 2번째 링크에서 의문을 느끼는게 결국 그 단일 책임의 범위 소재가 어디까지냐 이거임 ㅇㅋ? 자 그럼 니가 그렇게 잘아니까 니 말에 궁금해서 들어보자.
니 논리에 의거하면 SRP 따위 없이도 OOP하게 할 수 있다라고 하는거잖아? 그건 맞긴함 처음에 Alan Kay가 그렇게 주창했으니까 문제는 후대에 기본적으로 OOP 스러운 코드라고 할때 기본적으로 SOLID 원칙을 베이스로 한다는거임. 그럼 니논지대로라면 SOLID 원칙은 기본적으로 OOP에 상관은 없다 이건데, 그럼 OOP가 뭔데라는 의뭉스러운 점만 남는데, 애초에 OOP는 기본적으로 방법론인데, 그럼 니 말에 대한 논지에 대한 레퍼런스를 주면 내가 사과 함
이딴 병신같은 글이 념글이네
알런케이가 메시징,캡슐화,동적 바인딩이라고 말했지만 SRP가 후대에 OOP 핵심 개념중 하나임
ㅋㅋㅋㅋ 내가 sflab에서 석사하면서 19년에 oopsla까지 다녀왔는데 내 앞에서 oop가 뭔지를 논하네 인터넷 전문가야. SRP가 후대에 OOP 핵심 개념중 하나임 이게 도대체 뭔소리냐
아 ㅋㅋㅋ 진짜 미안한데 걍 니말이 다 맞다고 쳐라 내가 잘못함 ㅎㅎ
OOPLSA에 니가 연사로 감?
아니 제일 궁금한게 병신같은 점 이해를 해. ㅇㅇ 말 실수한것도 있고, 나도 마음에 안드는 부분 있지 근데, 대체 뭔 씨발 뭐가 잘못됐다라는 부분에 대해서 설명을 해줘야 이해를 하지. 내가 제일 궁금한게 이거임 그래서 OOP라는 개념을 어떻게 정의하는가? 추상화,캡슐화,상속,다형성이고, 니가 지적하는건 이부분일거임. 근데 문제는 후세에서 여기서 상속을 하기전에 기능을 정리해야하는데, 이러한 기능 정리에 SRP를 쓰잖아. 니 말은 이거 아님? OOP 원칙은 추상화,캡슐화,상속,다양성인데 뭔 개소리냐 맞지?
근데 여기서 객체를 정의한다는 의미에서 SRP의 의미는 객체라는 것의 정의를 이야기함. 근데 이 객체를 설명하기 위해서 SRP가 사용되는거고, 객체를 구분하기 위해서 책임의 범위를 상정하니까 그 이야기를 하는거임
결국 OOP에서 객체를 어떤범위에 상정할 것인가에 대한 비판은 엄연히 존재하는거고, 니가 진짜 그렇게 잘 안다면 내 말에 반박을 해주길 바람 니 말이 바람직하다면 나도 사과함 ㅇㅇ
https://gall.dcinside.com/board/modify/?id=programming&no=2761250 글하나 다시 써봄. 이제는 내 입장이 이해가 될거임
코딩을 gpt한테 배우는 새끼들이 늘긴 늘었나봗
그런 이론에 매몰돼서 집착하다보면 코드 하나도 못짠다 ㅋㅋㅋ
개발 효율성, 유지보수성, 읽기쉬운 가독성, 요구사항이 바뀌는 것에 대응하는 유연성 등등 실제 개발에서 겪을수있는 문제들을 고려해서 제시한 하나의 패러다임인데 OOP라는 그 자체에 너무 매몰돼서 완벽한 OOP를 찾는건 그다지 의미있는 일은 아닌듯 - dc App
단일 책임이란 것 조차도 모호해서 그렇지 모