zoukankan      html  css  js  c++  java
  • 枚举的简单使用

    枚举的简单使用

    近来重构代码,重写过程中发现好多不明白的0,1,或其它的一些仅表示状态的写死在代码中的东东出现,若不仔细的一再查找,非常难以读懂,出于为以后他人再看如此代码,能别再痛苦的糟蹋神经,或还可以唱唱高调的说成是一份责任!^-^
    于是就全把这些改用枚举实现,虽然在程序中的代码可能会多写一点,但其它作用应当大于那些0,1。
    (枚举类型:是指将一组相关的常量组合在一起形成一个数据类型)

    下面是针对某项目做的简易分析(仅代表个人意见):

    关于对项目中实体的状态参数及在业务逻辑业务流程中的状态参数,分别写两个枚举类实现:
            1.在一些实体(或数据库表的字段)中,某些实体状态(或字段)的值为一些如0,1,2的常量,或是其它类似的有规则的常量 ,通常在代码的存储或业务判断中,直接用这些并不明确含意的0,1,2来表示,若对数据库中的字段不特别了解,不太容易明白这些0,1,2数据代表的含意;若能通过一个实体状态枚举类,把所有实体的有规则的状态常量通过有意义的变量名称枚举。
            2.在一些流程控制中,一些控制状态,如:一个参数OperationType,传到另一个页面,为0表示显示某个控件,1则不显示,类似这样一些控制业务流程的状态常量也可以通过一个业务流程枚举实现

    用枚举来做,即可以使得在编码或重构过程不会莫名其妙冒出来个1或2出来,在不了解业务逻辑的情况下,鬼知道是个什么意思,所以避免直接硬编码这些状态参数在代码中;
    这样做的好处如下:
            1.在需要使用状态参数常量时,可以把项目组成员都规范到某些枚举类,避免随处仍个1,2,若不写注释让他人感觉不舒服.
            2.上面分析中提到的枚举类的成员都在写成有意思有常量,其实这个不必再说了,常量的有意思就是使得我们写的时候直接可以知道我们用的是什么状态。
            3.若模块业务流程状态发生变化时,可以直接修改代码中的枚举属性(根据枚举属性名称就应该知道当前流程状态是什么啦),不必再找到个998填上去了.(当然,如果你非得要填,那也无所了^-^)
            ......
    附简单源码:

     1using System;
     2
     3namespace CallCenter.Entity
     4{
     5    /// <summary>
     6    /// OperationFlowEnum 的摘要说明。
     7    /// </summary>

     8    public class OperationFlowEnum
     9    {
    10        private OperationFlowEnum()
    11        {
    12        }

    13
    14        // 页面传递
    15        /// <summary>
    16        /// 登录类型
    17        /// </summary>

    18        public enum LoginType
    19        {
    20            /// <summary>
    21            /// 登录类型为增加
    22            /// </summary>

    23            Add = 0,
    24
    25            /// <summary>
    26            /// 登录类型为查看
    27            /// </summary>

    28            View = 1
    29
    30        }
    ;
    31
    32        public enum FaultDealWay
    33        {
    34            /// <summary>
    35            /// 提交XX分派
    36            /// </summary>

    37            SubmitToCSM = -1,
    38
    39            /// <summary>
    40            /// 申请XX
    41            /// </summary>

    42            RequestClose = 0,
    43
    44            /// <summary>
    45            /// 继续处理
    46            /// </summary>

    47            ProcessContinue = 1,
    48
    49            /// <summary>
    50            /// XXX
    51            /// </summary>

    52            UpgradeToSubCenter = 2,
    53
    54            /// <summary>
    55            /// XXX
    56            /// </summary>

    57            UpgradeToQuality = 3,
    58
    59            /// <summary>
    60            /// XXX
    61            /// </summary>

    62            GoToVersionUpgrade = 4,
    63
    64            /// <summary>
    65            /// XXX
    66            /// </summary>

    67            UpgradeToPurchasePartManager = 5,
    68
    69            /// <summary>
    70            /// XXX
    71            /// </summary>

    72            SubmitToSeniorEngineer = 6,
    73            
    74            /// <summary>
    75            /// XXX
    76            /// </summary>

    77            SubmitToLocalOffice = -100,
    78
    79            /// <summary>
    80            /// XXX
    81            /// </summary>

    82            BoardRepair = 999,
    83
    84            /// <summary>
    85            /// XXX
    86            /// </summary>

    87            ApplySubCenterAssist = 998,
    88
    89            /// <summary>
    90            /// XXX
    91            /// </summary>

    92            ApplyLocalOfficeAssist = 997,
    93        }

    94    }

    95}

    96
  • 相关阅读:
    如何解决错误【selenium.common.exceptions.SessionNotCreatedException】
    VSFTP常用功能及参数配置
    ROS白名单服务端PHP脚本,客户端ROS脚本
    ocserver标准配置文件
    linux send与recv函数详解
    LINUX 恢复rm删除的文件
    C语言实现md5函数代码
    linux c语言获取CPU,内存,网速,磁盘使用,IO
    linux c语言fork socket 并发回射服务器
    杨惠兰不值得任何人付出
  • 原文地址:https://www.cnblogs.com/linfuguo/p/300144.html
Copyright © 2011-2022 走看看