代码重构例集

【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 @   kaizenly  阅读(256)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示