代码重构例集

【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.

顺序 选择 循环 总结

posted @ 2018-05-08 09:49  kaizenly  阅读(254)  评论(0编辑  收藏  举报
打赏