zoukankan      html  css  js  c++  java
  • 利用枚举,简化多个标志位统计

    最近项目中产品提出一个需求:页面中增加一个选择框,有六个复选框供用户去选择。选择完,点确定,记录这六个标志的状态并对用户的选择添加日志。

    首先我是一个菜鸟,写出的代码简单粗暴,也算是解决了产品的需求。然后代码提交到部门老大那,被痛批一顿,驳回了。老大人不错,也给出自己的解决办法,这个方法确实好。就是利用枚举和一个switch-case函数完美解决问题。

    枚举这样定义:

    enum EWarnType
    {
      EWT_One    = 0x00000001,
      EWT_Two    = 0x00000002,
      EWT_Three  = 0x00000004,
      EWT_Four   = 0x00000008,
      EWT_Five   = 0x00000010,
      EWT_Six    = 0x00000020,
      _C_MAX_NUM, }

    switch-case函数定义如下:

    std::string getString(int value)
    {
        switch(value)
        {
        case EWT_One:
            return "one";
        case EWT_Two:
            return "two";
        case EWT_Three:
            return "three";
        case EWT_Four:
            return "four";
        case EWT_Five:
            return "five";
        case EWT_Six:
            return "six";
        default:
            return "one";
        }
    }

    这样做的好处是可以做到代码不会出现重复,便于后期添加新功能和维护。

    1. 在页面添加这些标记你可以这样做:

    int nFlag = EWT_One;
    int i = 0;
    while (nFlag < _C_MAX_NUM)
    {
        //...do something
    
        ++i;
        nFlag = EWT_One << i;
    }

    通过一个循环搞定。后期的增加新选择和维护,只需要添加枚举值和修改switch-case函数即可。

    2. 记录用户的选择,用一个int类型搞定

    int nValue = 0; //记录用户当前选择的状态
    int nFlag = EWT_One;
    int i = 0;
    while(nFlag < _C_MAX_NUM)
    {
        if(...) //如果用户选择这个状态
            nValue |= nFlag;
    
        ++i;
        nFlag = EWT_One << i;
    }
  • 相关阅读:
    JS,JQ及时监听input值的变化,MUI的input搜索框里的清除按钮的点击监听事件
    MUI 底部弹出的选择框
    MUI 拍照或选取照片上传作为头像
    多行文本文本输入框 textarea 可点击任意地方编辑的问题
    mui dtpicker 时间的设置 以及MUI的弹窗
    MUI 样式按钮的禁用
    利用渐变实现书本的效果
    调用sqlserver中的存储过程
    XmlHelper
    面试题 数据库sql
  • 原文地址:https://www.cnblogs.com/zhugaopeng/p/8903515.html
Copyright © 2011-2022 走看看