zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——建议156:利用特性为应用程序提供多个版本

    建议156:利用特性为应用程序提供多个版本

    基于如下理由,需要为应用程序提供多个版本:

    • 应用程序有体验版和完整功能版。
    • 应用程序在迭代过程中需要屏蔽一些不成熟的功能。

    假设我们的应用程序共有两类功能:第一类功能属于单机版,而第二类的完整版还提供了在线功能。那么,在功能上,需要定制两个属性“ONLINE”和“OFFLINE”。在体验版中,我们只开放“OFFLINE”功能。要实现此目的,不应该提供两套应用程序,而应该通过最小设置。为一个应用程序输出两个发布版本。这一切,可以通过.NET中的特性(Attribute)来实现。

        class MyService
        {
            [Conditional("ONLINE")]
            public void Testing()
            {
                Console.WriteLine("完整功能版");
            }
    
            [Conditional("OFFLINE")]
            [Conditional("ONLINE")]
            public void GetInfoFromNet()
            {
                Console.WriteLine("单机功能版");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                MyService service=new MyService();
                service.Testing();
                service.GetInfoFromNet();
            }
        }

    要实现两个不同的功能,需要在程序入口这个文件最开头定义:

    #define ONLINE

    //#define OFFLINE

    这条编译符号一定要在文件的最开头。同时,该定义只对本文件有效。如果要想定义全局编译符号,则必须在项目属性中定义。如图:

    如果想定义多个全局宏定义,则用逗号隔开,如“OFFLINE,ONLINE”。

    如果要发布所有功能,就输入条件编译符号#define ONLINE,代码运行如下:

    完整版功能
    单机版功能

    如果要发布离线版功能,就用#define OFFLINE。运行如下:

    单机版功能

    转自:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    83. Remove Duplicates from Sorted List
    35. Search Insert Position
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    111. Minimum Depth of Binary Tree
    169. Majority Element
    171. Excel Sheet Column Number
    190. Reverse Bits
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4755619.html
Copyright © 2011-2022 走看看