class 能不能这么写

        我们知道大师写的类和我们自己写的类一般都是有明显区别的。比如偶有用
    c++,c#语言写过配置文件处理类。我所考虑的只是能够实现问题,也就是如果
    能够正确的读取我想要的配置文件,进行正确的解析就可以。

        有看过大师写的配置文件类,包含跨平台,ansi/unicode 兼容等特性。。。。
       
         一般来说,类兼容的特性越多,速度往往越慢(言多必失基本就是这个道理)。
     一个类如果加入了线程安全,跨平台特性,安全性,易用性等特性后。速度往往比
     只实现“功能”的那个版本慢。
       
        为什么类不能写成可配置的呢?如果我需要安全性我就启动安全检测部分代码,
     我需要跨平台特性,我就启动对应代码,需要线程安全特性同样如此。。。
    
        想了下应该还是可以做到的,一种做法是通过宏实现。请看下面代码:
        class a
{
    #ifdef part1
    void f1()
    {
        #define content1
            //这里可以进行安全检测
        #endif
       
        #define content2
            //这里是跨平台部分代码
        #endif
    }
    void f2();
    #endif
   
   
    #ifdef part2
    void f3();
    void f4();
    #endif
}

    如果我定义了 part1 宏就启动 f1() f2() 函数,如果定义了 part2,就启动
f3() f4() 函数。 如果定义了 content1 就启动安全检测部分代码等。。。。

    可以看到如此写一个类,要定义的标志太多了,代码可读性也不好,复杂度也比较高。最后恐怕要专门为这个类写个宏定义说明文档了。至于有多少人愿意配置就不得而知了。
   
    另一种实现方法是给每个类分配一个配置文件,通过配置文件启动代码的不同功能特性。我想情况会有一些改观,至少可读性好点了:)。如果能够根据类配置属性动态生成代码文件,这样可读性就更好了。

    启动类具备的功能特性前提条件是这些代码能够比较容易隔离。如果这部分代码和基本功能本身代码紧密的耦合在一起,恐怕实现起来就很困难了。

posted on 2006-12-11 12:02  小峰  阅读(334)  评论(3)    收藏  举报

导航