callback 이란 나중에 다시 불린다는 의미인데, 이것은 뭔가를 처리해달라고 요청한 다음 무작정 기다리는 것이 아니라 다 되면 불러달라는 고객 중심적인 처리 방식이다.

callback이 아름다운 것은 callback을 등록한 뒤, 괜한 일로 시간을 낭비하지 않겠다는 것이며, 그것은 이 사회를 말하자면 아쉬운 놈이 계속 칭얼대야 돌아가는 것 보다 한 번 얘기 했을 때, 다음에 확인해오는 끝까지 믿음직한 서비스가 만연해 있는 것을 말한다.

프로그램을 설계할 때도, 적절한 callback을 구사하면 확장성이 고려되었다는 인상을 짙게(!) 풍길 수 있다. 자칫 쓰지도 않을 확장을 고려하느라 시간을 낭비하기도 하지만, 미학에는 시간을 다투어 개발하는 것보다는 만들어진 결과로 판단하는 경우가 많으므로 논외로 하자.

callback이 아름다운 것을 느끼려면, 그 느끼는 방법을 몇가지 알아야한다.

1. typedef 로 정의 되는 callback 함수의 원형을 잘 기억하자.
2. callback 함수가 흔히 가지게 되는 문맥에 관계된 변수와 관계된 소유 및 생명시간을 찾아보자.
3. 등록될 callback 함수의 논리적 한계(접근하면 안되는 데이터야)와 구문상의 한계(컴파일이 안돼)를 찾아보자.
4. callback 함수가 봉착하게될 다중 실행 문맥(thread, signal) 상에서 데이터 보호를 위한 장치를 찾아보자.

이상 생각나는대로 주절여 봤습니다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  1. listen 2006.05.25 10:57 신고

    난무하는 함수 포인터와 매크로들을 싫어라 해서 잘 쓰지 않았지만...
    개념적으로는 예전의 GOTO와 비슷하다 아니할 수 없는 좋은 개념이지...
    다만 잘못쓰면 정말 스스로가 Call Back 되는게 흠이지...

    • 최호진 2006.05.25 15:45 신고

      사실 callback이라는 개념은 너무나 중요한 개념이라서, 이해하지 못하는 사람들을 염려해서 설계시 고려에서 제외하는 것은 실수라고 생각한다.

      callback의 개념을 이해하지 못하는 사람이나 개체지향 프로그래밍의 runtime binding을 이해하지 못하는 것이나 같다고 보거든.

+ Recent posts