1 根本目的
视图与逻辑隔离、易于不同平台的移植,易于逻辑开发人员和视图开发人员的协作。
2 基本原则
- 同样功能的前提下,优先选择标准C++库的API
- 程序逻辑部分拒绝使用MFC
- 只在界面和必须使用MFC的情况下,使用MFC
3 选择结果
- 数据结构,如链表、哈希表、队列等,使用标准C++库,如std::vector<>而不是MFC的CArray<>;
- 线程、进程、同步等与UI无直接关联的部分,使用Window API,而不用MFC的封装版本;
- 界面特效、Windows消息处理,直接使用MFC;
- 把逻辑实现与消息处理函数分开,放到单独的逻辑处理类中去完成,消息处理函数只负责完成用户输入校验,然后调用逻辑实现函数。
- 对于动态链接库的项目,导出的API是纯C函数,而不要导出C++类,更不要导出基于MFC的C++类。因为C++对于对象的内存布局并没有统一标准,所以不能跨平台。
以上为开发过程中个人的一些小总结,本以为这辈子不再使用C++做开发了,因为个人觉得底层有C,上层有C#,Web由PHP,这就是完美世界了。然而,世事弄人,这段时间不仅又干起了C++的活,而且还是带有MFC的VC++,更悲催的是要在古老的VC++ 6.0下编码。