MFC 思考:MFC是否没落了

MFC相对于如今众多林立的开发语言中算是比较老的了,但是至今MFC仍然还有很多人使用,就本人观点来看MFC相对于一些其他语言确实存在很多令人诟病的地方。
(1)MFC基于c/c++书写代码很多时候要比C#、VB、java代码要多,虽然这样确实比较灵活,但是对于当今高效率开发时代,书写更少代码实现更多功能是目前大势所趋
(2)MFC难学不易懂,MFC需要有c/c++基础,而且光有基础是不行的必须会操作开发环境,这也是一个难点,现在很多开发环境简化开发难度,例如菜单VB、C#,易语言等直接可视化操作,双击即可书写触发事件函数,MFC需要手动添加资源菜单、也不是双击菜单就能写触发事件函数,此外类的添加等操作显得繁琐
(3)MFC实现难度要比很多语言大,例如很多语言支持读取图像格式很容易,但是MFC虽然可以实现,但是对于初学者那个BMP格式还好说,轮到JPG、PNG显示到picture control就有点吃不消。此外MFC模态与非模态步骤也相对复杂些,C#直接使用show和showdialog即可,易语言载入命令一个真假即可实现,MFC却不是这么简单,除此之外还有MFC消息映射机制、控件变量传递等相对于其他语言确实要难理解。
(4) MFC貌似控件箱一直没什么改变,就那几个简单控件,使用起来想实现复杂功能只能靠书写大量代码实现,着实不划算
(5)MFC开发周期长,比其他语言难维护,如果用MFC去做一个文件重名复杂点的可能需要4个小时,而C#、VB、易语言等可能就需要几十分钟,这种方式开发确实不划算,如果出售价格一样MFC大打折扣
(6)MFC项目工程很大,如果什么也不做一个源码就有100M以上(VS上的,VC6就不说了,太老了。win10各种不兼容,崩溃),虽然经过设置可以缩减但是至少有5M以上,对硬盘要求有点高。但是其他语言占用硬盘却不在一个数量级。
当然还有很多地方MFC存在毛病,但不是一无是处,也有很多优点,不过就现在看来优点再多面对现在高效率开发时代也是很难走下去,个人建议想用MFC开发程序的人还是慎重考虑,能学其他语言就不要学MFC。以下是某论坛发表一个感慨,大家没事时候也可以看看
完全没想到10多年后还有人纠结要不要学MFC,我花点时间给新人们一个总结。

第1种观点 学习完MFC,你会更理解编程的思想,再学别的语言就更快了。

话说小白要去美国学技术,大黑劝他说:“你为什么不先到朝鲜,然后从朝鲜再飞到美国”,小白茫然不解。大黑接着说“你想你先到朝鲜再去美国,不是比从中国直接去美国近吗?”小白恍然大悟,“并且你到了朝鲜,那里有金太阳的照耀,你会更明白技术的思想。后面再学任何技术都很快。”于是小白去了朝鲜,然后他才知道原来朝鲜才是最好的地方,他给大黑打了长途电话,大黑问:“你感觉怎么样?”小白激动的说“我在学习用小刀刻芯片呢,听说美国都是动动按钮,学不到真正的东西。”

有的人要说“你看我就是先学了三年MFC,再学别的语言一样很快”,是,你要是先学三年JAVA或C#,再学别的语言会更快。你学三年MFC不是去跟零相比,是跟学三年其它语言比。在经济学上这叫机会成本,曼昆“你在面临选择的时候,要考虑的是机会成本”。

第2种观点 MFC接近于系统的底层,适合系统级的开发,学习他更能理解操作系统。

MFC能直接调用C,别的语言不能直接调用C吗?那.Net Interop是干什么的?醒醒吧!别说C,连MFC的DLL都有办法调用呢。
你真的觉得学习CDocument, CView, CWnd, CFrameWnd。。。这些绕来绕去的东西会更理解Windows?要更深的理解Windows要学习Win32编程,学习Windows核心编程,不是那个MFC,再说WinRT比Win32要好用的多。


第3种观点 MFC开发的程序运行效率高
MFC主要用来开发客户端程序,这里应该是跟C#对比,C#以前是托管程序,现在C#开发的Windows程序已经能编译成native了,运行效率提高了1.6倍左右吧,MFC是沉舟侧畔千帆过,船舱里的人还以为在乘风破浪。对了,visual studio的界面是用什么开发的呢?

还有一些观点,像什么刀呀剑呀,还有什么“你MFC用不好,也用不好C#”,就不一一列举了。很多时候辩证法就是粗看去很有哲理,实际毫无实际的指导意义。

为什么还有一些人推荐MFC?

话清末要废除科举制度,进京赶考的举子跪在外面绝食抗议,朝堂之上还有大臣坚持科举有多么好。是啊,你想这些老秀才学习四书五经学了半辈子,一下子又不考了,多少年的心血白费了。考物理,化学,代数,几乎给他们判了死刑。对于一个多年学习MFC,又不会别的语言的人,基本上也是深度套牢了。我记得冰河世纪里有一只老刺猬,洪水要来了,他躲在洞里不走“I was born in this hole and I'll die in this hole.”坚持是一种品质,顽固和守旧却是另外一回事了。这对于新手来说是一个很好的教训。


为什么还有很多刚毕业的大学生学习MFC?
因为他们的老师是上面所说的那些人。

MFC总有适合用的地方吧?
有,适合用在上世纪90年代开发Windows客户端程序。

MFC现在一点用都没有了吗?
不是,历史上遗留下来一些MFC的源代码需要维护。可能偶尔会用几个开源项目,就像弹药不够的时候偶尔也拼一下刺刀。

MFC应该跟什么语言比较?
Borland C++,VB6,Delphi,PB等。

什么人还需要关心一下MFC?
IT历史学家需要大写特写MFC曾经短暂的辉煌,考古学家需要考证这块化石的时候。
  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值