和其它面向对象的编程框架相比较,MFC的复杂性来源于3个方面:1、C++繁琐的语法, 2、MFC功能的广泛性,3、架构的不同,4、命名的语义性太差。
C++繁琐的语法
由于历史性的原因(保持兼容性、大量使用C++编写的遗留系统),和C#、Java以及其它很多脚本语言相比较,C++的语法对程序员不够友好。
性能上的优势并不能够成为C++丑陋语法的借口。
MFC功能的广泛性
和Windows Form、Jsp、Struts、WPF、LINQ、ADO.net……等这些面向对象的开发框架向比较,MFC的功能性更加广泛。例如WPF仅仅是专注于UI层的一套开发框架、LINQ仅仅是为了解决OO与SQL范式的鸿沟,为底层各种数据库模型提供统一的面向对象接口,而MFC则不同。
从软件分层的角度来看,MFC的功能跨越了几乎所有的层。下面是一个简单的MFC与各层次功能对应的列表。
![](http://hi.csdn.net/attachment/201109/2/0_1314951553x23C.gif)
图1
所以,准确来说&