重构总结

2020-11-27  本文已影响0人  CaesarXI
const res = a > b ? a - b : 0;
const res = Math.max(0, a - b); //性能更优

如果判断很多的话, 首先考虑通过配置项解决如字典, 其次使用switch case, 因为switch case 只做一次判断, ifelse最好的情况下做一次判断,最坏的情况下就是n次判断。

如果很多地方都在对一个变量进行操作,可以考虑将操作和变量抽象为一个类来处理,便于统一开发和维护。例如有一个电话号码mobile的变量,很多地方需要对它做校验,而且每个人都写了自己的校验方法,如果要修改校验的话就要找出每个地方,所以抽象出来更易于维护和管理。

class Mobile {
    _mobile: string;
    
    constructor() {
        this._mobile = '';
    }
    
    get mobile () {
        return this._mobile;
    }
    set mobile (mobile) {
        this._mobile = mobile;
    }
    
    isValide = () => {
        return (/^(?:13d|15[89])-?d{5}(d{3}|*{3})$/.test(this.mobile));
    }
}

函数参数粒度越细使用上下文空间越大,即范围越广,反之则越小。在如下例子中可以看到a函数被限定于只能在类customer作为参数时使用,而b函数则不限于某个类,只要传入stateCode就可以使用。

function a_inNewEngland (customer) {
    const stateCode = customer.address.state;
    return ["MA", "CT"].includes(stateCode);
}

function b_inNewEngland (stateCode) {
    return ["MA", "CT"].includes(stateCode);
}
上一篇下一篇

猜你喜欢

热点阅读