令我头疼的MFC命名

最近在写一些关于MFC的东西,是因为做了些MFC的项目,一些零散的东西需要总结一下。但这并不代表我有些喜欢他了,其实还是蛮讨厌的。毕竟看了.Net Framework,再看N多年前的MFC,多少是有些不顺眼的。机理上的东西不敢多说,有些变量和方法名字的设置,站在FCL的设计角度看了,多少觉得有些不爽。也许是我太弱,也许是因为它的设计上考虑还是没有足够的经验,列举一些,娱乐娱乐。

1. 在构造一个自定义的Dialog对象时,我们会传入一个CWnd的指针进去,那个名为pParent的对象。但当我在Dialog中调用GetParent函数的时候,无论传进的是什么指针(比如CYourView),得到的返回值都是指向CMainFrame的指针。曾经由于这个我调了N久的程序,我承认这是由于我对MFC的了解不够造成的,但这名字也太具有迷惑性了吧。

2. 当然还有臭名昭著的UpdateData函数,很荣幸在这点上我和大师一样,每次用到的时候都要停下来查看一下才能分清楚那个诡异的bool变量的意义。也许这在有IDE的时候不是问题,但问题是我看书的时候就会很麻烦了。分离成两个明确命名的函数,也许会好很多。

3. ShowWindow。恩就是它。看到这个名字,不熟悉MFC的人应该都会觉得它是用来显示一个窗口的。但...,其实它兼有显示和隐藏窗口的功能,决定这一切的又是一个诡异的bool量...

4. MoveWindow和SetWindowPos。这一对不够专注的兄弟。它们太强大了,所能做的事远不止Move和SetPos那么简单,当我想改变一个窗体大小的时候,我翻来覆去的找函数,万万没想到,原来是这对名不副实的兄弟的工作,Faint...

5. GetWindowRect和GetClientRect。其实他们也许没有问题,有问题的是我,我不喜欢用引用量代替一个貌似应该由返回值完成的东西...

6. SelectObject。为什么你传入一个新的Object,它返回一个老的Object呢?不止我一个人,很多人都被这个搞晕过,其实我也不明白,一个函数做两个函数的事,这确实有点热心过度了吧...

7. afx_msg。一个永远都没被用到的预留量,这样的东西在MFC中有很多...

posted on 2007-06-21 23:18  duguguiyu  阅读(1455)  评论(3编辑  收藏  举报

导航