"我懂.net,mfc,atl,owl( c++ builder 库),windows api"
"那么如果我现在的项目里不需要你说的所有的这些东西,你还能做什么?"
"那么,恐怕我做不了什么。"
如果那个人是你的话,那么我觉得你还没真正的入行。
以前我记得有个帖子曾经这么提问过
"以后windows没有windows api了,没有mfc了,将是.net的天下,
vc++ 程序员要失业了".那么如果没有windows api你就失业了,那么只能说你确实不是真正的c++程序员。
那么真正的软件开发都该包括些什么呢:
实际上在软件的世界里,真正重要的是思想,而不是工具本身。
1:应用程序框架:
除了我们常说的"net,mfc,atl,owl( c++ builder 库),windows api",
实际上还有很多的应用程序框架比如QT,java他们都是跨平台的库。
但是所有的应用程序框架库,他们对应的类名和函数可能千差万别,但是他们的对应
的核心的思想都一样:大不了就是一个复合的可以任意层次组合的树形的UI窗口部件,
窗口部件通过事件的机制通知外部应用程序。
并且他们都会致力于解决一些通用的计算机问题:比如序列化,运行时类型识别,
异常处理,消息路由,通用的一致的间接函数调用Invoke etc.
UI上都会提供菜单,工具栏,对话框等等一系列的基本的元素。
理解了这些。什么框架还不都一样。
2: view显示,data定义,算法
并且实际上在一个分层设计的系统里,UI和应用程序框架把原始鼠标键盘消息传递到
逻辑业务层的工作量实际上在一个大的系统里一般就占1/8左右的工作,并且整个技术
难度也不大。剩余的view,data, 算法才是软件的核心。
3:软件架构设计
并且软件框架设计思想本身也完全和应用程序框架没什么关系,
它最多只能会借助c++的特性(封装,继承,多态)去实现而已。
这里我还想说的其实我们的很多的好设计可以直接借助很多好的库里的好的设计灵活
应用到我们的系统中:比如COM思想,ATL实现COM的实现手法
STL思想和实现手法,MFC,WTL,OWL等思想和手法。
COM真是个好东西,也许你永远也不会真正的用ATL,或MFC去做COM,但是你可以根据 COM的思想去构建一个好的庞大的灵活的大的系统。