您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
很多人说C++ 的MFC已经过时了,那新入门的人到底应该学什么?
面向对象,的人,技术很多人说C++ 的MFC已经过时了,那新入门的人到底应该学什么?
发布时间:2016-12-08加入收藏来源:互联网点击:
很多人说C++ 的MFC已经过时了,那新入门的人到底应该学什么?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
以上帝之名诅咒MFC!这是撒旦用来毁灭程序员的武器!如果你是一位初学C++的新手,以你父母的血汗钱为名请你远离这个毒物!
MFC既糟蹋了C++,又侮辱了UI!MFC为了实现UI,扭曲地使用了C++编译器结构,又为了实现平台功能非常弱智地破坏了
UI的层次性封装,更糟糕的是这玩意儿用面向对象的方法实现了一套面向过程的UI架构,然后强暴了“容器”这个概念,让这么一个存粹而具有美感的设计理念变成了慰安妇!
一个完全理解并能熟练应用面向对象设计及开发的面向对象的程序员,在使用MFC时,我发誓五百万只纯种“草泥马”在设计者的祖坟上无数次地碾压奔腾!
写出MFC这套东西的人,是的,我不在乎他是谁就算你告诉我他是什么天外巨牛我照样代表程序员问候他的先人!设计这玩意的人,他不懂C++也不懂GUI!很多那个年代的清纯骚年受这破烂的影响,在 转向真正的面向对象领域时非常困难,在理解和思维层面上很困难地接受真正的面向对象的设计理念及设计思想!那些被无辜伤害的清纯骚年以MFC为榜样,把一个伪概念性面向对象类库当成设计样例和典范,在理解和设计层次上非常难让他们理解真正的面向对象的设计理念及封装!
在C#出来以后,为了挽救一个被MFC糟蹋过的革命青年,一个办法就是他给去学习并且进行一段时间的C#编程,让他理解什么叫面向对象!让他体验面向对象程序员的思维及行为方式,然后回到C++来谈谈怎么写代码!
对于写UI的人,从MFC这套类库出来,其实他们完全不懂UI的原理和UI实现的技术事件!把平台的消息特性与UI循环所实现的Z轴层次特性完全揉在一起,当你要他去实现一个更具挑战性的UI层次时,他对UI技术近乎绝望的陌生感,简直是挑战程序员的技术无知容忍底线!
从UI架构及技术实现上,QT当然是优秀的!如果你用C++写GUI,那么QT的框架层次会帮助你建立UI的基于对象封装及消息剥离的层次观!这不仅能让你学习UI的知识也能让你体悟更多面向对象的设计技术!
回答于 2019-09-11 08:43:50
举个简单的例子,在Windows系统开发UI程序,如果说使用Windows SDK相当于一代技术(这里的划分不够严格,只是通过类比让大家更容易理解),MFC就相当于第二代技术,C#、JAVA则相当于第三代技术,而QT则处于二代与三代技术之间,相当于二代半技术。
在MFC之前,使用C++开发桌面程序(Windows平台),只能通过调用Windows SDK提供的API,要付出很大的代价来处理UI程序中的各种消息,不仅要做很多繁琐的重复性工作,还特别容易出错。
MFC的出现改变了这一状况,它使用了一些技巧——消息宏映射,使得开发者只需要在代码中添加一些简单的宏,就可以实现事件消息与处理程序之间的响应,在当时来说,确实让人惊艳!
而QT则更进一步,它使用了信号-槽机制和一些辅助工具,如moc、uic、rcc等,分别用来处理信号与响应函数的关联、UI设计、以及资源管理等,更重要的一点它可以实现跨平台,当然代码需要重新编译。
C#和JAVA则更进一步,它们在语言层面解决了事件与处理函数的关联问题,不管是在开发效率和使用难度上都要比上面的技术更好一些。而且他们也可以实现跨平台。
在知道了这些技术的差别之后,我的建议是,如果是做桌面UI程序,可以使用C#或者JAVA等语言,C++更适合于做服务端或者算法方面的开发。一般在实际开发中,会使用多种语言混合开发,以便让每种语言都能发挥自己的强项,比如我个人的工作主要在图像处理方面,所以经常使用C#开发界面,而使用C++来写图像处理算法方面的代码。
最后谈一点个人的感受,即使有QT的支持,C++还是不适合做UI开发,效率太低!
回答于 2019-09-11 08:43:50
你想学啥子入门?如果是入门C++那就跟MFC没有关系,整个编辑器、编译器(MSVC,GCC,clang)再来一本经典书籍就可以开始了,如果你想入门一个C++应用库(GUI),那建议你选择QT,在多平台都可以用
回答于 2019-09-11 08:43:50
跨平台GUI基本就Qt了 工具完善 文档丰富 MFC不能跨平台 微软基本放弃了 代码也比较复杂
回答于 2019-09-11 08:43:50
主要是市场需求没以前windows流行时候那么火了,目前招人也发觉具备这块的人特别特别少
上一篇:为什么煮巴沙鱼有大量泡沫?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |