==== if后面后必须有括号,且有else ====
* 必须有括号:保证该一起执行的代码再一起,不被缩进影响
* 必须有else:强制自己思考如果不满足条件应该怎么样?
==== 尽量不使用自增符号 ====
* 除了在for循环中、或者单独一行否则不能使用自增:因为自增从语义上不是很好理解,且需要区分前置、后置自增
==== 循环中尽量不用contine,break ====
* continue让程序变得难以理解:continue的语义是关注不要做什么,
* 解决方案:我们用if可以转成关注换要做什么
* 不用使用break: 常常需要关心break后,程序跳转到哪里了,在多层循环的时候经常搞迷糊
* 解决方案:最好将需要break的地方封装成一个函数,满足条件直接return
continue,break 打破了逻辑局部性,每次使用continue,break时需要向前找代码(找while, for)。这样非常影响逻辑的严谨性。 重构的时候很难考虑到修改了while时,还要去找循环体中是否存在continue和break,特别是循环体比较大的时候。
说白了 continue,break 和 while,for不是强关联。重构的时候很容易忘记他们的关系
==== 慎用短路操作符 ====
* 除了逻辑判断中,其他地方不能使用短路操作,以为短路操作的隐式逻辑容易让人迷惑
fun1() && fun()2
改成
if(fun1()){
fun()2;
}
==== 多用临时变量 ====
* 经常看到有人将很多函数连续调用变成很长的一行。其实这样很容易出错
* 解决方案
* 多用临时变量(临时变量一般都在栈上不会影响性能,和gc)
* 每次连续调用尽可能不超过1次
* 局部变量名字建议短一些,但也要能表达语义。