-
在一个switch块内部,每个case要么通过break/return来终止,要么注释说明程序将继续执行到哪一个case为止,在一个switch块的内部,都必须包含一个default语句并且放在最后,即使是空代码
-
在if/else/for/while/do 语句中必须使用大括号,即使只有一行代码,避免采用单行的编码方式:如 if(condition) return;
-
在高并发的场景中,避免使用 等于 判断作为中断或退出的条件。
原因:如果并发控制没有处理好,容易产生等值条件被击穿的情况,使用大于或者小于的区间判断条件来进行代替
经典例子:判断剩余的奖品的数量等于0的时候,终止发放奖品,但因为并发处理错误导致奖品数量瞬间变成了负数,这样的话,活动无法终止 -
表达异常的分支判断的时候,少用if else 可以改写成
if(!condition){
return;
}
// continue else sentence
注:超过三层的条件判断语句,可以使用谓语句,策略模式,状态模式来实现 -
不要在条件判断中执行过于复杂的语句,可以将判断的结果存在一个bool变量中,后对此变量进行判断即可。(可读性)
-
循环体中的语句一定要考虑性能。
移动到循环体外:定义变量,定义对象,获取数据库的连接,进行不必要的try catch 操作(如果可以移到体外) -
尽量通过正常的逻辑进行判断,对于逆向的逻辑操作谨慎,如取反(不利于理解和维护)
-
接口的参数保护
-
参数校验的场景
- 频次低的方法(频次高的在总体的效率上会降低)
- 很重要的方法(执行时间开销大,或者功能关键,影响很大),即使执行频次低,但如果因为没有校验而导致异常,得不偿失(重要是保证整体的运行稳定)
- 需要极高稳定性和可靠性的方法
- 对外提供的接口一定要注意检验,防止交互的成本,一两句能节省很多交互成本,质量和稳定才是做产品的路
- 敏感的权限的入口
- 不需要参数检验的场景
- 极有可能被循环调用的方法,在方法参数注明外部参数检查的要求
- 被声明成private的只会被自己的调用的方法,只要保证调用的参数已经做过了检验,可以不用再检验。
网友评论