2006년 09월 07일
마이크로 소프트의 미숙한 설계 하나..
윈도우 MFC 클래스 중..
에디트류(CEditCtrl, CEditView 등)의 클래스 멤버함수들 중에..
다음과 같은 설계상의 미스로 생각되어지는 문제아들이 있습니다..
// =====================================================
OnkeyDown(UINT nChar, UINT nRepCnt, UINT nFlags),
OnChar(UINT nChar, UINT nRepCnt, UINT nFlags),
OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
// =====================================================
예전에 이들 함수를 사용하면서 해맸던 경험이 있었는데..
해맸던 원인은 바로..
이들 함수의 인자 명칭에 있었습니다..
nChar 값에 문제가 있는데..
OnKeyDown(..) 이나 OnKeyUp(..) 에선 가상 키 코드값이 넘어오고,
OnChar(..) 에선 아스키 코드 값이 넘어옵니다..
넘어오는 인자의 형이나 이름이 같으니 개발자 입장에서는 당연히..
넘어오는 인자의 정보가 같다는 직감을 가지고 개발에 임하게 되고,
여기서 혼란을 야기할 소지가 발생하는 거지요..
물론,
MSDN 을 꼼꼼히 읽어본다면 쉽게 해결할 수 있는 문제이지만..
성격이 급하다거나,
주변 환경이 산만해서 독해에 집중하기 힘들때..
(아니면 영어에 쥐약..;;)
이런 경우엔,
별거 아닌곳에서 디버깅하는데 시간을 낭비할 소지가 있게 됩니다..
(제가 위와 같은 경험을 겪었습니다..)
어플리케이션의 사용성에서 직감대로 동작하는게 중요하듯,
개발시에도 라이브러리 설계자는 개발자의 직감대로
동작하게끔 라이브리러를 만들어야 할 책임이 있습니다..
PS. 적어도 마소 정도의 회사라면..
에디트류(CEditCtrl, CEditView 등)의 클래스 멤버함수들 중에..
다음과 같은 설계상의 미스로 생각되어지는 문제아들이 있습니다..
// =====================================================
OnkeyDown(UINT nChar, UINT nRepCnt, UINT nFlags),
OnChar(UINT nChar, UINT nRepCnt, UINT nFlags),
OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
// =====================================================
예전에 이들 함수를 사용하면서 해맸던 경험이 있었는데..
해맸던 원인은 바로..
이들 함수의 인자 명칭에 있었습니다..
nChar 값에 문제가 있는데..
OnKeyDown(..) 이나 OnKeyUp(..) 에선 가상 키 코드값이 넘어오고,
OnChar(..) 에선 아스키 코드 값이 넘어옵니다..
넘어오는 인자의 형이나 이름이 같으니 개발자 입장에서는 당연히..
넘어오는 인자의 정보가 같다는 직감을 가지고 개발에 임하게 되고,
여기서 혼란을 야기할 소지가 발생하는 거지요..
물론,
MSDN 을 꼼꼼히 읽어본다면 쉽게 해결할 수 있는 문제이지만..
성격이 급하다거나,
주변 환경이 산만해서 독해에 집중하기 힘들때..
(아니면 영어에 쥐약..;;)
이런 경우엔,
별거 아닌곳에서 디버깅하는데 시간을 낭비할 소지가 있게 됩니다..
(제가 위와 같은 경험을 겪었습니다..)
어플리케이션의 사용성에서 직감대로 동작하는게 중요하듯,
개발시에도 라이브러리 설계자는 개발자의 직감대로
동작하게끔 라이브리러를 만들어야 할 책임이 있습니다..
PS. 적어도 마소 정도의 회사라면..
# by | 2006/09/07 00:07 | 버그 보고 | 트랙백 | 덧글(1)



