已阅读章节:
变量名的力量
组织直线型代码
不常见的控制结构
基本数据类型
变量命名最重要的是要完全、准确的描述该变量代表的事物
如当前日期:currentDate
或todayDate
,被省略为cd
、current
、date
,不能明确的说明具体要表达什么,因此命名要清晰。
名字反应的是问题(含义)而不是解决问题的动作,如一条个人成绩的输入
inputLine
远远没有personalScores
明确
最好控制在8~16个字符,不能太短,如i
最好用在循环变量且只有几行代码时,很明显这里的i
是局部变量,他的作用域就是那几行代码
但若代码被复制、移动,i这样的变量容易出错。所以慎用
变量中经常会有总量、最值的概念,请将其放在变量最后边,如ageAverage。
不过中国的思维是修饰词在前,一般会命名为maxLength
。
我认为项目中只要能保持统一即可!
用temp、x、y等为临时变量命名,表明程序员还没把问题弄清楚
摘录几项中的缩写原则:
- 使用标准缩写
- 去掉虚词and、the、ing、ed
- 使用名字中的重要单词,不超过3个
- 避免语音缩写,change2Str是什么意思?
- 为省掉一个字符的缩写不推荐,如June写成Jun
- 缩写要保持一致,用Num或No,
不推荐使用No,太有歧义了,也不推荐直接使用Number,容易和数字类型混淆
如果你的项目中缩写只有自己能明白,请给出语义对照表!
inputValue
和input
clientRcs
和clientRps
,因为人们对于他们的心理距离太近了。donor
和owner
day
和DAY
tableI
和table1
代码只写一次,但可能会被阅读很多次,所以,请为变量起一个几年后自己仍能明白的名字
前提是必须拆分功能,尽量做到(SRP)Single-Responsibilitv Principle
getData();
processData();
printData();
不要在processData中做获取数据的操作
还可将数据作为返回值,彻底避免顺序错乱
let data = getData();
data = processData(data);
printData();
做到代码能自上而下的阅读(很少有人能做到)
根据不同条件直接返回不同结果,没有要执行其他操作
function compare(a, b) {
if (a > b) return 'moreThan';
if (a < b) return 'lessThan';
return 'equal';
}
而如果在返回结果之前需要判断类似非空的动作,可能会导致大量的条件嵌套,可以将条件判断分开执行,如
function _readFile(fileName, filePath) {
if (fs.existsSync(filePath)) { // 这里只是举个例子,可以直接用path + name判断文件是否存在
if (fs.existsSync(`${filePath}/${fileName}`)) {
// if () {
// More code hereeeeeee
}
}
}
}
上面的嵌套太不优雅了,可以在一次判断失败后做点什么,体现下自己的主权,咳咳
function example(a, b, c) {
if (!a) throw new Error('参数a无效');
if (!b) throw new Error('参数b无效');
if (!c) throw new Error('参数c无效');
process(a, b, c); // 真正的处理刚刚开始
}
还可以在if后面做更多的详细的处理,如参数a无效时请检查什么文件等等,
好吧,原来用递归计算阶乘是非常愚蠢的行为,(谁编写的教科书?打他)因为栈空间会非常大,所以在使用递归时首先考虑其易理解性及内存耗损,如果循环和递归都能实现,考虑他们的优劣吧
尤其是状态值,如果在代码的多处使用到,就更应该为其命名了
对于可能随着环境变化的常量值,最好将其命名,已好实现单点控制,让软件真正的软起来!
js中的浮点数计算可能会出错,要小心哦
19.9 * 100
// 1989.9999999999998
具体原因参考这篇博文
麻烦在代码中用变量名清楚的表达这个布尔值到底代表了什么
function fun() {
if (currentIndex < maxIndex || currentIndex < 0) {
// some code here
}
}
上面条件判断很不清晰,如果换成就一目了然了
function fun() {
const readFinish = currentIndex < maxIndex || currentIndex < 0;
if (readFinish) {
// some code here
}
}
参考之前的博客
优化代码性能我们常常挂在嘴边,那如何优化以及何时优化呢?