VCF是什么?

2019-01-21 18:18

问题补充:
alxeb
alxeb ·
0 0

五子棋术语

  VCF:(Victory of Continuous Four的缩写) 五子棋中引入的英文名称,即利用连续不断冲四这种绝对先手,直至最终成五而取得胜利的一种技巧。简称"连续冲四胜"或"连冲胜"。

  常为五子棋残局排局解题的一种取胜技巧。

计算机术语

  文件扩展名

  outlook中的联系人,可以复制粘贴到outlook的联系人当中,发信时是联系人的地址。

  The Visual Component Framework

  The Visual Component Framework is an advanced C++ application framework that makes it easy to produce powerful C++ applications. The framework is a based on a thoroughly modern C++ design and has built in support for Rapid Application Development (RAD). The framework is designed to be portable over multiple platforms and compilers, so you don't have to lose all that work that went into writing your app for a single platform!

  VCF是一个C++编写的开源项目,全名Visual Component Framework,中文名:可视化组件框架。在这里先把我这两天的学习体会记录一下。

  程序框架库应该可以算是系统级软件,它提供给用户一种相对固化的编程方式,进而简化系统编程。想想最开始在Win3.1下使用SDK开发程序的日子,我们真的应该感谢编出这些框架库的英雄们。

  最早且最流行的框架库应该是Borland公司的OWL库(早期的Borland公司推出的每一样东西都是极品)。再后来也是目前最流行的框架库就是MFC了,C++Builder中的VCL库也是非常有特色的。最能评价MFC和VCL的好坏的人,应该是侯捷,他分别写了《深入浅出 MFC》和《深入浅出VCL》,对每个库的分析都是非常不错的。

  目前,随着计算机技术的发展,越来越多的人们对计算机的熟悉,框架库的数量和类别也越来越多,及外延也越来越广,以至于在某时,我们不知道某个库算不算框架库。就象前几天分析的WTL(它也变成开源项目了),以及目前名声在外的STL、BOOST、WXWINDOW等。他们也应该属于框架库吧。

  还有三个软件是非常值得一提的:

  1、AGG,一个类似于GDI+的2D图形库,写得非常的好,如果有空,我应该将前段时间分析AGG的经验写出来。

  2、LOKI库,就是那个写《C++设计新思维》的作者提供的,如果有空,我应该将前段时间分析LOKI的经验写出来。

  3、CPPUNIT库,一个单元测试的工具。

  谈了这么多,还是重点讲一下VCF本身吧。

  我看重并分析VCF的原因,应该是其RTTI功能,其次是它采用了比较先进的C++编程手法。

  由于我正在编写一个开源的工控软件,想编写一种通用的属性处理程序,编了很长时间没有进展,后来仔细分析了一下我的需求,才发现我想要实现的功能,其实就是一个RTTI的扩展功能,何不直接找一个具有RTTI功能的库来分析一下呢?于是上网查找,发现VCF对RTTI的实现是最完整、最符合我的需要的。而其它库,对RTTI的实现,要么不完整,要么实现方法太差。

  RTTI的实现,首先应该看语言本身对其的支持程度,象Delphi、C#、VB等语言本身就有Property属性的,对RTTI 的实现相对就简单的多,而C++语言本身无支持Property的语法,而在CodeProject上看到的一些实现方法,都不是太好。

  昨天花了一晚上将VCF的帮助文档看完,并分析了其RTTI的实现方法,体会如下:

  1、由于VCF还处在开发阶段,其帮助文档很不完善,有许多内容都是空的;

  2、VCF的源码则非常清晰,不愧不大家手笔;

  3、VCF对RTTI的实现,包含在FoundationKit的RTTI目录中,包含了十多个文件,看其文件内容,其实现方法应该算是中规中矩的;

  4、VCF实现了如下RTTI功能:

  A、运行时查找对象所对应的类的名称、ID、描述;

  B、类的继承关系;

  C、Property功能;

  D、Event功能;

  E、Method功能;

  F、为属性编辑而实现的Enum功能;

  G、为属性编辑而实现的Item功能;

  H、运行时基于名称和ID的动态对象创建功能;

  I、Interface功能;

  J、运行时类信息的注册功能;

  等等。

  5、从功能上讲,这非常接近我的需求,但还差如下功能:

  A、基于属性的自动保存和读入功能(象Delphi那样);

  B、运行时提供属性的隐藏和恢复功能,虽然目前通过其运行时增加和删除属性可以变通实现,但实现起来不方便;

  C、属性的分层;

  D、重点属性的标注;

  6、另外,从其实现看,性能可能会是一个非常大的问题,因为其运行时对属性的访问都是通过名称来访问的,即便是通过UUID访问,也是通过UUID的字符串访问的,而实现上,在一个程序运行阶段,大部分类属性的访问是不需要通过名称来访问,而直接可以通过序号或编号来访问的。如果我想将它拿来用,一定要先对其性能进行重写。