==== 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次 * 局部变量名字建议短一些,但也要能表达语义。