代码重构例集
【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.
顺序 选择 循环 总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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的设计差异