惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
Vercel News
Vercel News
D
Docker
博客园 - 聂微东
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
N
Netflix TechBlog - Medium
G
Google Developers Blog
腾讯CDC

博客园 - 小峰

反思下 [.net] 将 datatable 存储到数据库 - 小峰 要上班了 表达式模版学习笔记 模版元编程学习笔记 模版默认参数小探 boost serialization 试用 套接字 io 模型 小结 精简版 rtti boost/format试用 类成员变量私有化 设计模式小结 接口版本演化引发的思考二 c# 程序最小化到系统托盘 [xna]帧数 皆是#惹的祸 [xna]键盘 代码片段 单元测试
class 能不能这么写
小峰 · 2006-12-11 · via 博客园 - 小峰

        我们知道大师写的类和我们自己写的类一般都是有明显区别的。比如偶有用
    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 就启动安全检测部分代码等。。。。

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

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