• 代码重构例集


    【1】if ... else ... 结构 与 三目运算符结构

     1     // TODO......
     2     int n = 100;
     3     // if ... else ... 结构
     4     bool b = true;
     5     if (b)
     6     {
     7         n += 100;
     8     }
     9     else
    10     {
    11         n -= 100;
    12     }
    13 
    14     // 等价的三目运算符 结构
    15     n = b ? (n + 100) : (n - 100);
    16     // TODO......

    【2】if ... else ...结构 与 条件作实参法结构

     1     // if ... else ...结构 与 条件作实参法结构
     2     if (TRIGGER_OFF == m_config.triggerType)
     3     {
     4         m_powerAnalyzer->setWaveTriggerOn(false);
     5     }
     6     else
     7     {
     8         m_powerAnalyzer->setWaveTriggerOn(true);
     9     }
    10 
    11     // == 条件作实参法结构
    12     m_powerAnalyzer->setWaveTriggerOn(TRIGGER_OFF != m_config.triggerType);

    【3】针对bool类型的变量,if条件判断表达式不用等于true 或 false

     1     // 针对bool类型的变量,if条件判断表达式不用等于true 或 false。示例:
     2     if (enable == true)
     3     {
     4         m_cflag |= KeyUp;
     5     }
     6     else
     7     {
     8         m_cflag &= ~KeyUp;
     9     }
    10 
    11     // 改进1:去掉等于true或false的判断。示例:
    12     if (enable)
    13     {
    14         m_cflag |= KeyUp;
    15     }
    16     else
    17     {
    18         m_cflag &= ~KeyUp;
    19     }
    20 
    21     // 改进2:转化为三目运算符。示例:
    22     m_cflag = enable ? (m_cflag | KeyUp) : (m_cflag & ~KeyUp);

    【4】精简的三目运算符

     1 // 原代码
     2 bool GcfgDataBar::isCursorOutMax(int index)
     3 {
     4     if (index == 0)
     5     {
     6         if (m_markPlusOrder > m_endOrder)
     7         {
     8             return true;
     9         }
    10         else
    11         {
    12             return false;
    13         }
    14     }
    15     else
    16     {
    17         if (m_markMultiplyOrder > m_endOrder)
    18         {
    19             return true;
    20         }
    21         else
    22         {
    23             return false;
    24         }
    25     }
    26 }
    27 
    28 // 精简为三目运算符结构版本1
    29 bool GcfgDataBar::isCursorOutMax(int index)
    30 {
    31     if (index == 0)
    32     {
    33         return (m_markPlusOrder > m_endOrder) ? true : false;
    34     }
    35     else
    36     {
    37         return (m_markMultiplyOrder > m_endOrder) ? true : false;
    38     }
    39 }
    40 
    41 // 精简为三目运算符结构版本2
    42 bool GcfgDataBar::isCursorOutMax(int index)
    43 {
    44     return (0 == index) ? (m_markPlusOrder > m_endOrder) : (m_markMultiplyOrder > m_endOrder);
    45 }

    【5】去掉多余的局部变量

     1 // 原代码
     2 void WinNumeric_itemApplication::navigateWidget(int dir)
     3 {
     4      QModelIndex curindex = p_winItemAppTable->getCurrentIndex();
     5      bool flag;
     6      if (getGlobalSetting(SETTING_NUMERIC_APPIMAGE,"").toString() != "" )
     7      {
     8          flag = true;
     9      }
    10      else
    11      {
    12          flag = false;
    13      }
    14      if (flag)
    15      {
    16         navigateHasImageWidget(dir, curindex);
    17      }
    18      else
    19      {
    20          navigateNoImageWidget(dir, curindex);
    21      }
    22 }
    23 
    24 // 重构版本1:去掉多余的局部变量
    25 void WinNumeric_itemApplication::navigateWidget(int dir)
    26 {
    27     QModelIndex curindex = p_winItemAppTable->getCurrentIndex();
    28     if (getGlobalSetting(SETTING_NUMERIC_APPIMAGE, "").toString() != "")
    29     {
    30         navigateHasImageWidget(dir, curindex);
    31     }
    32     else
    33     {
    34         navigateNoImageWidget(dir, curindex);
    35     }
    36 }
    37 
    38 // 重构版本2:修改QString字符串的非空判断
    39 void WinNumeric_itemApplication::navigateWidget(int dir)
    40 {
    41     QModelIndex curIndex = p_winItemAppTable->getCurrentIndex();
    42     if (getGlobalSetting(SETTING_NUMERIC_APPIMAGE, "").toString().isEmpty())
    43     {
    44         navigateNoImageWidget(dir, curIndex);
    45     }
    46     else
    47     {
    48         navigateHasImageWidget(dir, curIndex);
    49     }
    50 }

    【6】待续......

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    minicom的安装和tftp的安装
    主机和VMware中的Linux如实现共享文件夹
    gcc调试 学习1
    ARM1
    javaweb学习方案1
    java环境变量和tomcat环境变量配置
    逻辑代数
    在写一点关于MySQL的知识,感觉自己mmd
    Ural 1519 Formula 1 (DP)
    UVaLive 3126 Taxi Cab Scheme (最小路径覆盖)
  • 原文地址:https://www.cnblogs.com/Braveliu/p/9006573.html
Copyright © 2020-2023  润新知