假如有一个业务需求是,如果业务分数大于80分 设置一个表示flag =1其他 为0
你会不会这样写
方法一if(score> 100){
setFlag =1
}else{
setFlag =0
}
方法二你是不是也会这样写
setFlag =0
if(score> 100){
setFlag =1
}
你知道这两种有什么区别吗,方法二其实有很大的风险 假如方法二 后边有逻辑 比如,或者 中间有什么其他业务代码,
setFlag =0
try { //其他业务代码,
if(score> 100){
//其他业务代码,比如查询数据库
setFlag =1
}
}catch (){ }
这些代码如果报错,那么Flag 这个字段必然 会被赋值为0 假如这个这个人的分数 大于100应该等于1,那么会破坏整体的业务逻辑。
这就是方法一的好处 ,如果出问题将不会有值,
接下来我们在看一下变形
假如 这样 ,你接到一个需求 说 测试组同学大于100分的设置为1 其他为0 或者 不传,产品随手一写你随手一听,你会这样做
if(score> 100&&name =测试组){
setFlag =1
}else{
setFlag =0
}
如果没有特别说明你应该这样做
if(name =测试组){
if(score> 100){
setFlag =1
}else{
setFlag =0
}
这样做的目的,第一留出一种情况 也就是setFlag 不传的情况,这样第一你能知道 程序报错的逻辑。第二你整体上规避了 非测试组 也能拿到值的情况。
我举个现实中的例子,幼儿园有大班小班,小朋友分苹果,说给大班女生分一个梨 ,其他分苹果,这样就避免了,小班也能拿到苹果的情况,
注意业务开发准则就是:缩范围保安全。