代码自动完成、文档自动生成、提高开发效率----介绍VcExtend[3]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 dellfox 的 blog

 


九、可选项----定制你的vcextend

     你可以通过对源代码的一些全局常量进行修改来使vcextend更适合你的习惯或开发组的规范。源代码中已对这些全局常量加了注释,很容易理解的,这里只对其中的几个可选项加一些说明。

hppdir = "" ’ "hpp" ’hpp文件的存储目录,如果不为"",一定要加
cppdir = "" ’ "cpp" ’cpp文件的存储目录,如果不为"",一定要加
inldir = "" ’ "hpp" ’inl文件的存储目录,如果不为"",一定要加

    一个工程里文件较多时可能要分目录存储,修改上面的存储目录即可实现分目录存储。如果定义了存储目录,一定要在工程目录下建立这些目录,如果忘了,就会产生第三节所说的内存错误。如果把inldir设为等于hppdir,inl文件就会和.h文件放在一起。

    关于目录,还有一点要说明的。生成新类的时候,有一个目录选项,所填目录不包括上述的存储目录的部份。比如hppdir="hpp",cppdir="cpp", inldir=hppdir,生成新类时加了目录名@views,那么cpp文件会存到cppviews目录下,而hpp和inl文件会存到hppviews目录下。并且,一定要先建好views目录!!!


mark_desc = "简述"  ’注释标签,修改了这些项则必须对doc目录下的.xsl文件作相同修改。
mark_return = "返回" ’
mark_param = "参数" ’
mark_cort = "分类" ’

    这些是注释的必选项,你可以改变标签名字,比如说改为英文。我喜欢用中文,因为英文长短不一。

marks_class = "版权/作者/初建/修改/说明" ’可选类注释项,修改则须修改.xsl文件
marks_function = "说明" ’可选函数注释项

    这些是注释的可选项,你可以随便增删或改为英文,也可以按自己的喜好或开发规范重新排序。

namelen = len(mark_desc) ’等于上面的最长的标签的len
namelang = 2             ’标签的语言,英文为1,中文2

    如果你改变了标签,这两个变量也要做相应改变,否则注释会很难看,存入时还可能读错。

    下面的可选项目前不推荐改动,有兴趣的话可以看看。

    assertget = false ’是否在所有的读函数中加断言语句
    assertset = false ’是否在所有的写函数中加断言语句
    getsetall = false ’是否为所有的成员变量生成读写函数
    assertsentence = "assert_valid(this);" ’断言语句的内容

    前面已经说过,用//rw来标记成员变紧是否可读写,标记为//rw的成员变量会生成public:的读写接口。

    如果你把getsetall设为true,vcextend就会为所有的成员变量生成数据读写函数,其中,有可读写标记的成员变量会生成public:的读写函数,而其他读写函数的访问控制符与成员变量一致。有点迷糊吧?看看例子:

protected:
    cstring m_strname; //r
private:
    int     m_nage;    //w
    cstrign m_straddr;

    如果getsetall设为true,则会生成:

public:
    cstring getname() const;
    void setage(int age);
protected:
    void setname(const cstring& name);
private:
    int getage() const;
    cstrign* getaddr();
    void setaddr(const cstrign& addr);

    可以看出,公共的读写接口还是一样的,那么protected和private的读写函数有什么意义吗?

    我正在尝试一种c++编程观念:类的封装可以进一步扩大,将类设计和类实现完全分开,函数声明、成员变量、构造与析构及对象有效性检查、数据接口均属于类设计,其他功能函数的实现属于类实现,类实现完全不接触成员变量,而是通过数据读写函数来操作数据。这样做有一些很吸引人的好处,比如说assertget、assertset、getsetall全部设为true,类实现中全部通过getset函数来读写成员数据,那么将自动形成严密的断言网络,可以拦截很多很难查找的错误,照我的说法,是用密集阵火炮拦截巡航导弹。当然,这是指assertvalid函数已经实现得很好。

    还有其他好处,但也有一些缺点,我正在尝试使用,有兴趣的朋友可以一起探讨,目前不推荐。

 


十、如果vcextend对你有用,请跟我一起完善它

     跟开发工具有关的东西,是否有用好用,要靠实际应用中来检验。如果你发现了什么问题,或修改了其中的某些缺陷, 请在论坛中发表。如果你有建议,更不要藏私啊。我专门搞了个小论坛,就是为了收集各种问题和建议,过一段时间,我会推出修改后的版本。

    还有一些功能正在酝酿中,比如小组中多人各自开发,如何合并文档等等。你如果有什么相关需求,请当作建议提出来。

本文关键:代码生成,文档,注释
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top