2017. 3. 15. 10:43ㆍ프로그래밍/Windows
Message Delivery vs Direct Function Calls
멀티 쓰레드 환경이나 다양한 윈도우를 관리하는 환경에서
다른 클래스간의 함수를 호출해야 하는 경우가 상당수 존재한다.
이 경우
메시지 전달을 통해 함수를 호출 할 것인가?
클래스에 직접 접근해서 함수를 호출 할 것인가?
인터페이스를 정의하여 이를 통해 호출 할 것인가?
어느 쪽이 좋을까? 하는 의문점을 가지게 되어 생각해 보았다.
각각의 특징과 장단점을 알아보면
message delivery
- 메시지 전달과정을 거쳐야 해서 direct function calls 에 비해 느리다.
- 정보은닉, 커플링(종속성)이 줄어 객체지향 적이다.
- 전달 파라미터 수가 제한되어 여러 변수를 넘기기 위해서는 구조체 선언이 필요하다.
direct function call
- 함수 주소에 직접 접근하여 빠르다.
- 함수명, 파라미터에 대하여 전부 알고 있어야 하며(정보은닉),
함수가 변경되면 호출된 클래스에서도 같이 수정작업이 필요하다.(종속성)
- 파라미터 제한 없이 자유롭게 넘길 수 있다.
Interface
- 두가지 방법의 중간지대. 절충안.
코드의 심플함.
- 메시지 전달의 경우 메시지 수신 부를 작성해야 하여 코드가 길어진다.
속도를 중시 할 것인가? 객체지향성을 중시 할 것인가?
또한 빠른 속도와 거대한 프로젝트로 인해 둘 다 중요한 게임에서는 어느 것을 선호해야 할까?
참고
http://answers.unity3d.com/questions/656249/sendmessage-or-direct-function-call.html