编写可复用性更好的C++代码:Band对象和COMToys(5)
2006-07-21 11:46:08 来源:WEB开发网本文将向你展示如何利用MyBands 和 BandObj框架作为测试平台来开发一个库,这个库的源代码本文的例子程序:COMToys。COMToys并不像ATL或者MFC那样与系统融为一体,它是一些更特别的宏、函数、类以及我认为能轻松编写BandObj的东西的集合。但COMToys提供了一种用C++编写COM的方法或途径,它适用于任何类型的COM对象,不论你是使用MFC。还是其它的什么东西。COMToys是一种态度——它告诉人们用C++编写COM组件并不难,情况也确实是这样!
COM:C++编程的困境
自从有了COM,我不得不同情可怜的使用Java语言和Visual Basic语言的C++程序员。你会看到编写"form.color = red"的程序员那得意的笑容,而C++黑客们正焦急的发出指令——QueryInterface…Get()…Set()——以及随时提醒自己不要忘了检查HRESULT!如果没有对每一个AddRef调用Release,那就叫上帝帮你吧!哈哈哈……在Visual Basic中,你不用记住要敲入分号。与Visual Basic和Java语言比起来,C++更强大,更有倾向性,但一涉及到COM,其复杂性似乎让人感到无望。这对COM是专为C++而设计是一个多么大的讽刺啊!毕竟,COM对象只是一个C++虚表(vtbl)。
问题并不是C++,也不是COM。而是大多数C++程序员对它们的了解还不够。它们从SDK的例子中剪切、粘贴代码——这些公开的长长的代码只是用于示范最原始、最无遮掩的编程方法,从来没有考虑如何面向系统设计。兄弟,那些东西不是产品代码!不知你想过没有,为什么把它们叫做例子?C++的优点是让你编写重量级的程序。但没有人能天天忍受那种编程虐待。如果你想容易,你就可以容易。只要你先花点时间建立一些工具,这些工具以后将会成倍地回报你的。Visual Basic和Java语言之所以容易是因为考虑了将基础结构内建在语言系统中。但你也可以编写自己的基础结构来使得C++易于使用啊。
更多精彩
赞助商链接