优化JS函数
作者:互联网
在我们开发的过程中。需要不断地迭代函数,函数的单一功能和开发闭合原则
如下面的例子:
- 小明在逛某品牌网店的规则,发现如下:
如果购买女装 满200 -30 不满200 打 9.5 折
如果购买男装 满100 - 10 不满100 打 9.5 折
如果购买童装 满300 - 50 不满300 打 9 折
当看到这样的业务逻辑,我们可以列出最直观的函数
function onPrice (people, originPrice) {
if (people === 'isWoman') {
if(originPrice >= 200) {
return originPrice - 30
}
return originPrice * 0.95
}
if (people === 'isMan') {
if(originPrice >= 100) {
return originPrice - 10
}
return originPrice * 0.95
}
if (people === 'isChild') {
if(originPrice >= 300) {
return originPrice - 50
}
return originPrice * 0.9
}
}
像这样的固然可以运行计算,但是不符合函数的优化策略,1,单一功能性,这里处理了判断人群,又判断有价格,违背了单一功能性,2,开放闭合原则,如果我们在这里的基础上要新一个类型 运动服装,又要在这个函数去添加修改,容易影响到函数内部的逻辑
1, 修改为单一功能性
function isWoman ( originPrice ) {
if(originPrice >= 200) {
return originPrice - 30
}
return originPrice * 0.95
}
function isMan ( originPrice ) {
if(originPrice >= 100) {
return originPrice - 10
}
return originPrice * 0.95
}
function isChild ( originPrice ) {
if(originPrice >= 300) {
return originPrice - 50
}
return originPrice * 0.9
}
function onPrice (people, originPrice) {
if (people === 'isWoman') {
this.isWoman (originPrice)
}
if (people === 'isMan') {
this.isMan (originPrice)
}
if (people === 'isChild') {
this.isChild (originPrice)
}
}
···
##### 经过处理,如果要新添加一个类型直接添加为函数,他们互不影响,但是这里的函数还有很多判断,新添加的类型也要在函数里操作,为了更简便一点,我用到了对象映射的方式
```js
var peopleType = {
isWoman (originPrice) {
if(originPrice >= 200) {
return originPrice - 30
}
return originPrice * 0.95
},
isMan ( originPrice ) {
if(originPrice >= 100) {
return originPrice - 10
}
return originPrice * 0.95
},
isChild ( originPrice ) {
if(originPrice >= 300) {
return originPrice - 50
}
return originPrice * 0.9
}
}
function onPrice (people, originPrice) {
return peopleType [people](originPrice)
}
标签:function,return,函数,people,JS,0.95,originPrice,优化 来源: https://blog.csdn.net/qq_42183923/article/details/113484317