细节决定品质:不良的if/else使用习惯
代码重构无处不在,重点滴做起。经常见到一些下面这样的代码:
1、不要拿bool和false直接比
if (false == IsXXX())
{
}
这是画蛇添足,费力不会讨好,直接了当即可:if (!IsXXX())
2、太多的if/else嵌套,导致过多缩进,造成眼花缭乱,阅读困难
if ()
{
if ()
{
if ()
{
if ()
{
if ()
{
}
else
{
}
}
}
}
}
这个时候应当考虑提取成函数调用,以减少直接的if/else嵌套层次。同理,while/for也应当避免这种情况。
3、if代码块过长,else代码块仅两三行,典型的头得脚本,造成阅读困难
if (A == B)
{
// 超过一屏的代码行
// 代码行1
// 代码行2
// 代码行3
// 代码行4
// 代码行5
// 代码行6
// 代码行7
// 代码行8
// 代码行9
// 代码行10
// 代码行11
// 代码行12
// 代码行13
// 代码行14
// 代码行15
// 代码行16
// 代码行17
// 代码行18
// 代码行19
// 代码行20
// 代码行21
// 代码行22
// 代码行23
// 代码行24
// 代码行25
// 代码行26
// 代码行27
// 代码行28
// 代码行29
// 代码行30
// 代码行31
// 代码行32
// 代码行33
// 代码行34
// 代码行35
// 代码行36
// 代码行37
// 代码行38
// 代码行39
}
else
{
// 两三行代码
// 代码行1
// 代码行2
// 代码行3
}
由于if代码块超过了一屏,会大大增加阅读代码的困难,特别是要找到if对应的else时,不得不非常小心。建议遇到这类代码时,将if和else代码块对调,会值得阅读代码容易许多,如下所示:
if (A != B)
{
// 两三行代码
// 代码行1
// 代码行2
// 代码行3
}
else
{
// 超过一屏的代码行
// 代码行1
// 代码行2
// 代码行3
// 代码行4
// 代码行5
// 代码行6
// 代码行7
// 代码行8
// 代码行9
// 代码行10
// 代码行11
// 代码行12
// 代码行13
// 代码行14
// 代码行15
// 代码行16
// 代码行17
// 代码行18
// 代码行19
// 代码行20
// 代码行21
// 代码行22
// 代码行23
// 代码行24
// 代码行25
// 代码行26
// 代码行27
// 代码行28
// 代码行29
// 代码行30
// 代码行31
// 代码行32
// 代码行33
// 代码行34
// 代码行35
// 代码行36
// 代码行37
// 代码行38
// 代码行39
}
当然更佳的习惯,是不要有过长的代码块,应当考虑封装成函数。
分类:
C/C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义