게, 셋보다는 일반 메소드를 노출하는 방향이 나을껄요. 객체지향 사실과 오해였나가 잘 설명해줌.
black7375(58.227)2022-08-02 15:06
보통 여러사람듫하고 협엽을 하잖아 협업중인 다른 사람들이 어떤 변수를 직접접근으로 그사람 코드에서 썻다고 치자. 근데 요청사항이 바뀌어서 이젠 기존값의 2배로 돌려줘야한다고하면, 그사람들 전부에게 그 사실을 통지하고 그사람들이 자기 코드에서 다 두배씩으로 고쳐야함.
그러느니 그냥 게터하나두고 다른사람들도 반드시 게터로만 접근하게 하면 그 게터에서 2배된 값으로 돌려주기만 하면됨 협업중인 사람들은 코드를 고칠필요가 없으니 훨씬 일이 수월해지고 책임이 분배가 잘되지
얘가 2배라한건 그냥 비유잖아 뭔 calculateXXX다 이러고있냐 ㅋㅋㅋ 너가 괴물이라해보자 하면서 예시들면 난 괴물아닌데? 이럴사람이네
익명(175.223)2022-08-02 16:28
답글
오 ㄱㅅㄱㅅ 이해됨
익명(221.164)2022-08-02 16:38
니 말이 맞음 게터세터가 필요없을 정도로 기능을 잘 쪼개서 내부의 데이터 쪼가리가 어떻게 지지고 볶아지는지 몰라도 알아서 돌아가도록 설계하는게 중요함
근데 그딴 거 모르겠고 그냥 C처럼 구조체 직접 접근하는 식으로의 주먹구구식 개발을 좋아하는 사람들이 게터세터를 남발하지
익명(61.84)2022-08-02 18:01
세터는 모르겠고 게터는 안티패턴임.
익명(skuld88)2022-08-02 18:32
좀더 원론적으로 이해하고프면 오브젝트 같은 OOP 관련 책을 읽어보셈 참고로 게터세터는 OOP 구현을 위한 구체적 테크닉 중 하나지 정보은닉이라는 개념 자체가 거기에 의존하지는 않음
익명(39.7)2022-08-02 18:42
답글
글고 클래스마다 멤버변수에 대한 게터세터 줄줄 달려있는건 높은 확률로 병신코드인것도 맞음
익명(39.7)2022-08-02 18:44
모든 걸 잠재적으로 누군가 건드릴 수 있으면 테스트도 무한히 해야함. 그래서 이 클래스와 소통하려면 이 경로로만 해라 라고 한정하는 의미도 있음 - dc App
익명(223.62)2022-08-02 18:45
내부 구현은 모르겠고 이거 해"줘" 가 되게 설계 잘 하는게 중요. 오픈소스중 설계 잘된거 함 잘 따라가보면 무슨말인지 이해가 언젠가 될것임. - dc App
익명(223.62)2022-08-02 18:47
또 다르게생각해보면 rest api를 생각함 ㄴ되는데 그걸 통신 안 거치고 클래스들끼리 한다고 상상해도 될 듯 - dc App
익명(223.62)2022-08-02 18:47
“니멋대로 값 접근해서 바꾸지 말고 내가 제공한 방식대로 바꿔라” 이런거임 물론 의미없는 게터세터가 더 많음
익명(118.235)2022-08-02 21:00
행위 기반으로 추상화릍 하기 위해서임. 그래야 객체가 자율적으로 홭동할수있어. 누군가에 대해서 많이 아는게 자연스레 마이크로매니징으로 이어지는걸 생각하면 편함. - dc App
익명(220.121)2022-08-03 11:39
남들이 니 코드로 이상한 짓 하는거 막는거임
익명(220.118)2022-08-03 11:42
답글
setter가 있는데, 누가 데이터에 직접 접근해서 null을 넣는다던지 하는 그런 트롤짓을 막는거
익명(220.118)2022-08-03 11:44
C 같은 언어들을 쓰다보면 문자열 다루기가 난해한데 이걸 편하게 할려고 string_t랑 관련 함수들을 정의했다고 하자. 접근 제한자가 없기 때문에 구조체 멤버들을 마음대로 수정 가능함. 만약 이 객체를 다른 로직이 메모리 관리등의 이유로 접근하고 있었다면 문제가 됨. 쉽고 간단한 언어들은 접근 제한자가 없는데 애초에 이런 상황이 잘 안일어나니.
남한테 코드 줘서 쓰게 시킬 때 안건드릴거 건드릴거 구분하기 편하라고 - dc App
그게 맞는데 빡통들이 자꾸 건드리니까 못건드리게 언어에서 막는거
게, 셋보다는 일반 메소드를 노출하는 방향이 나을껄요. 객체지향 사실과 오해였나가 잘 설명해줌.
보통 여러사람듫하고 협엽을 하잖아 협업중인 다른 사람들이 어떤 변수를 직접접근으로 그사람 코드에서 썻다고 치자. 근데 요청사항이 바뀌어서 이젠 기존값의 2배로 돌려줘야한다고하면, 그사람들 전부에게 그 사실을 통지하고 그사람들이 자기 코드에서 다 두배씩으로 고쳐야함. 그러느니 그냥 게터하나두고 다른사람들도 반드시 게터로만 접근하게 하면 그 게터에서 2배된 값으로 돌려주기만 하면됨 협업중인 사람들은 코드를 고칠필요가 없으니 훨씬 일이 수월해지고 책임이 분배가 잘되지
객체 필드값을 2배해서 돌려줘야할 일이 뭐가있겠노
필드값을 두배로 만들 일이 왜없어?? 존나 많을텐데
private 필드에 대한 간접 액세스를 제공하는게 게터세터지 니가 얘기하는건 calculateXXX 메서드다
얘가 2배라한건 그냥 비유잖아 뭔 calculateXXX다 이러고있냐 ㅋㅋㅋ 너가 괴물이라해보자 하면서 예시들면 난 괴물아닌데? 이럴사람이네
오 ㄱㅅㄱㅅ 이해됨
니 말이 맞음 게터세터가 필요없을 정도로 기능을 잘 쪼개서 내부의 데이터 쪼가리가 어떻게 지지고 볶아지는지 몰라도 알아서 돌아가도록 설계하는게 중요함 근데 그딴 거 모르겠고 그냥 C처럼 구조체 직접 접근하는 식으로의 주먹구구식 개발을 좋아하는 사람들이 게터세터를 남발하지
세터는 모르겠고 게터는 안티패턴임.
좀더 원론적으로 이해하고프면 오브젝트 같은 OOP 관련 책을 읽어보셈 참고로 게터세터는 OOP 구현을 위한 구체적 테크닉 중 하나지 정보은닉이라는 개념 자체가 거기에 의존하지는 않음
글고 클래스마다 멤버변수에 대한 게터세터 줄줄 달려있는건 높은 확률로 병신코드인것도 맞음
모든 걸 잠재적으로 누군가 건드릴 수 있으면 테스트도 무한히 해야함. 그래서 이 클래스와 소통하려면 이 경로로만 해라 라고 한정하는 의미도 있음 - dc App
내부 구현은 모르겠고 이거 해"줘" 가 되게 설계 잘 하는게 중요. 오픈소스중 설계 잘된거 함 잘 따라가보면 무슨말인지 이해가 언젠가 될것임. - dc App
또 다르게생각해보면 rest api를 생각함 ㄴ되는데 그걸 통신 안 거치고 클래스들끼리 한다고 상상해도 될 듯 - dc App
“니멋대로 값 접근해서 바꾸지 말고 내가 제공한 방식대로 바꿔라” 이런거임 물론 의미없는 게터세터가 더 많음
행위 기반으로 추상화릍 하기 위해서임. 그래야 객체가 자율적으로 홭동할수있어. 누군가에 대해서 많이 아는게 자연스레 마이크로매니징으로 이어지는걸 생각하면 편함. - dc App
남들이 니 코드로 이상한 짓 하는거 막는거임
setter가 있는데, 누가 데이터에 직접 접근해서 null을 넣는다던지 하는 그런 트롤짓을 막는거
C 같은 언어들을 쓰다보면 문자열 다루기가 난해한데 이걸 편하게 할려고 string_t랑 관련 함수들을 정의했다고 하자. 접근 제한자가 없기 때문에 구조체 멤버들을 마음대로 수정 가능함. 만약 이 객체를 다른 로직이 메모리 관리등의 이유로 접근하고 있었다면 문제가 됨. 쉽고 간단한 언어들은 접근 제한자가 없는데 애초에 이런 상황이 잘 안일어나니.