整洁代码最重要的一步就是取一个好名字,可以清晰的表达自己的功能和用法。改名是最常用的重构手法,包括:改变函数声明、变量改名、字段改名等。
改变函数声明
函数是我们将程序拆分成小块的主要方式。函数声明则展示了如何将这些小块组合在一起工作,可以说,它们就是软件系统的关节。对于这些关节,首当其冲的就是它们的名字。一个好的名字可以让我一眼看出函数的用途,而不必查看起实现代码。有一个改进函数名字的好办法:先写一句注释描述这个函数的用途,再把这个注释变成函数的名称。
做法
根据旧函数被使用的范围可以有两种方法,一种是简单方法,一种是迭代式做法。
简单方法
当函数被调用的范围小时可以使用简单方法。按照我的理解就是不需要花很长时间修改的就可以一次改完的,例如:同一个页面被多次调用的函数
迭代式做法
比如有一个函数如下:
function circum(radius){
return 2*Math.PI*radius
}
同时它被几百个地方调用,现在想把它的名称改为circumference,此时如果采用简单方法的话,就必须一次性修改所有的调用者。
而迭代式做法的做法则是:
先提炼出一个新的函数
function circumference(radius){
return 2*Math.PI*radius
}
然后在旧函数中内联
function circum(radius){
return circumference(radius)
}
再逐步修改调用就函数的地方
如果想沿用旧函数名称,可以先给新函数起一个易于搜索的临时名字。改完后在对临时名字进行替换
变量改名
如果要改名的变量只作用于一个作用域时,直接找到变量的所有引用,修改过来就好了。如果变量被广泛使用,可以考虑运用封装变量将其封装起来。找出所有使用该变量的代码,逐一修改,再进行测试 例如:
let name = 'john'
// 有些地方读取它
result = `My name is ${name}`
// 有些地方修改它
name = person['name']
我们就可以对它进行适当的封装
function getName(){ // 读
return name
}
function setName(data){ // 写
name = data
}
result = `My name is ${getName()}`
setName(person['name'])
常量改名
const country = 'US'
// 改名成countryName
const countryName = 'US'
const country = countryName
字段改名
- 如果记录的作用域较小,可以直接修改所有改字段的代码,然后测试。后续步骤就可以跳过
- 如果记录还没有封装,先使用封装记录
- 在对象内部对私有字段改名,调整内部访问该字段的函数
- 测试