识别代码的坏味道(四)

在这里插入图片描述

要想重构就需要先识别代码中存在的问题,然而问题有多种也分轻重缓急,所以Code Smell(代码坏味道)可以看作是应该首先动手解决的问题,因此重构过程可以抽象成如下简单的过程。

在这里插入图片描述

在之前的文章中介绍了常见的 22 种代码坏味道:

《识别代码中的坏味道(一)》

《识别代码中的坏味道(二)》

《识别代码中的坏味道(三)》

本本将介绍其他 3 个代码坏味道:

  1. 反复使用单个临时变量
  2. 无业务意义的临时变量
  3. 方法结果返回 null
  4. 多层条件嵌套
  5. 有副作用的查询方法
  6. 假设条件符合

01 反复使用单个临时变量

使用单个变量反复进行赋值操作。例如

int temp = level * score;

...

temp = temp * eight;
...

为什么反复使用单个临时变量是一种代码坏味道?

为单个变量在或许中多次在代码中经常见到的一种代码。这种代码的问题就在于变量所要表达的意思并不清楚,除非读完所有涉及到改变量赋值的地方,并把它们串联起来才能了解它到底是在处理什么逻辑。

这种风格的代码如果经常出现在代码中,无意在添加、修改、修复 bug 的时候都会降低代码的阅读速度,

如何解决反复使用单个临时变量这种代码坏味道?

通过非常简单的方法就可以解决上面的提到的语意化问题:为每次赋值创建一个独立的临时变量。重构后代码如下:

final int levelScore = level * score;

...
  
final int weightedScore = levelScore * weight;

...

将每个变量使用 final 关键字避免后续对其进行值的修改,同时为每个结算结果使用语意明确的变量名命名。

02 无业务意义的临时变量

变量作为某个业务逻辑的一部分,同时很难为变量找到合适的命名,且后续只是被使用了一次。

int tempScore = level * score + commentCount;
int score = tempScore * weight;
int finalScore = score + livenessScore;
...

为什么无业务意义的临时变量是一种代码坏味道?

  1. 临时变量只在函数中起作用,这非常容易导致长函数的出现。
  2. 过多的临时变量会导致不容易聚焦;
  3. 临时变量使用不当还造成函数难拆分。

如何解决无业务意义的临时变量这种代码坏味道?

如果业务中并没有相关的概念,那么就可以选择 Inline Temp(内联变量),用完整的表达时表示某个业务意义,例如

int weightedScore = (level * score + commentCount) * weight;
int score <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值