fkdl0048 / Mentoring-Project

development mentoring
3 stars 0 forks source link

온라인 멘토링, 2024-04-29 [23:00] 40회차 #122

Closed fkdl0048 closed 5 months ago

fkdl0048 commented 6 months ago

객체지향 관련 멘토링

인스턴스의 인터페이스를 통한 퍼블릭 메서드 호출과 델리게이트의 차이점

저번 멘토링 때 주신 떡밥? 생각해보면 좋은 점을 계속 생각해봤는데, 명확한 차이점은 객체라는 점인 것 같습니다.

동일한 부분은 의존성을 줄이기 위한 호출이라는 점으로 둘 다 직접적인 참조가 아니기에 런타임에 결정된다는 사실이지만, 델리게이트는 조금 더 행위에 무게가 있는 것 같고 인터페이스는 객체라는 타입을 분류하기에 더 적합한 것 같습니다.

결국 인터페이스로 묶이게 되면 해당 인터페이스라는 타입으로 행위를 한 개 이상 바라볼 수 있다는 것 같고 델리게이트는 한개의 행위에 대한 콜백을 느슨하게 연결하기에 더 적합하다는? 생각이 듭니다.

그리고 더 나아가서 런타임에 해당 인터페이스 참조가 동적으로 변하는 과정은 더욱 인터페이스가 유리할 것 같습니다. 델리게이트는 등록한 즉, 리스너가 취소하거나 등록함을 관리해야 함에 비해, 인터페이스는 꼭 리스너가 아니더라도 해당 참조를 런타임에 쉽게 협력관계에서 자동적으로 변경되도록 설정할 수 있다는 점인 것 같습니다. 결국 델리게이트에서 해당 코드를 체이닝하는 코드 자체가 정적이라는 말인 것 같습니다.

12장 다형성 읽고 느낀점..

객체지향이라는 프로그래밍 패러다임을 다시한번 멀리서 바라볼 수 있던 챕터인 것 같다. 언어나 툴은 도구에 가깝다는 말을 항상 기억하고 공부하는데, 객체지향은 도구보다 프로그래밍 가치관에 가까운 것 같다. 본질적이며 설계적이고 매우 치밀하다.

유연한 협력을 만들기 위해 생각해야 하는 구조는 사람마다 다르게 나올 수 있어도 모두가 똑같이 바라봐야 하는 청사진은 객체이며, 이들간의 유기적인 협력 그리고 그 객체들이 가지는 책임을 잘 이해하고 설계하는 것이 중요한 것 같다.

개인적으로 계속해서 객체지향에 대한 공부를 진행하면서 점점 더 멀리서 바라보게 되는 것 같다. 가장 중요한 점은 이 책은 코딩을 잘하게 해주는 책이 아니라는 점.

상위 레벨의 하위 참조에 대한 고민

저번 멘토링때 나왔던 이야기로 모듈마다 레벨을 정해서 상위 하위로 나누고 상위 -> 하위로는 직접 참조, 하위 -> 상위 인터페이스의 구조에 대한 고민

아이템과 플레이어 관계는 느슨한 인터페이스의 연결이라고 할 때, 이를 더 높은 레벨에서 관리하는 게임모드의 경우 둘 다 직접적인, 정적인 참조를 가지는 것이 좋다고 생각하는데, 이것에 덩치에 관한 고민..