成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

最佳實(shí)踐

iamyoung001 / 3436人閱讀

摘要:什么是重構(gòu)字面上的理解重新組織結(jié)構(gòu)為什么要重構(gòu)原來(lái)的結(jié)構(gòu)是什么樣子的有什么問(wèn)題函數(shù)邏輯結(jié)構(gòu)條件判斷循環(huán)操作包含關(guān)系集合關(guān)系非關(guān)系可擴(kuò)展性差新的變化不能被靈活處理對(duì)象強(qiáng)耦合可復(fù)用性差重復(fù)代碼多性能消耗太多隨著技術(shù)發(fā)展新的好特性如何重構(gòu)知道問(wèn)題

什么是重構(gòu)?
字面上的理解: 重新組織結(jié)構(gòu)
為什么要重構(gòu)?
原來(lái)的結(jié)構(gòu)是什么樣子的?有什么問(wèn)題?
1. 函數(shù)邏輯結(jié)構(gòu)[條件判斷、循環(huán)操作]: 包含關(guān)系、集合關(guān)系、非關(guān)系...
2. 可擴(kuò)展性差,新的變化不能被靈活處理
3. 對(duì)象強(qiáng)耦合
4. 可復(fù)用性差, 重復(fù)代碼多
5. 性能消耗太多
6. 隨著技術(shù)發(fā)展, 新的好特性
如何重構(gòu)?
知道問(wèn)題是什么, 針對(duì)問(wèn)題進(jìn)行重構(gòu)
可擴(kuò)展性差,新的變化不能被靈活處理 eg
let checkType = function(str, type) {
    switch (type) {
        case "email":
            return /^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$/.test(str);
        case "mobile":
            return /^1[3|4|5|7|8][0-9]{9}$/.test(str);
        case "tel":
            return /^(0d{2,3}-d{7,8})(-d{1,4})?$/.test(str);           
        case "number":
            return /^[0-9]$/.test(str);
        case "english":
            return /^[a-zA-Z]+$/.test(str);
        case "text":
            return /^w+$/.test(str);
        case "chinese":
            return /^[u4E00-u9FA5]+$/.test(str);
        case "lower":
            return /^[a-z]+$/.test(str);
        case "upper":
            return /^[A-Z]+$/.test(str);
        default:
            return true;
    }
}

違反開放 - 封閉原則[對(duì)擴(kuò)展開放, 對(duì)修改封閉]
策略模式: 把一系列算法進(jìn)行封裝,使算法代碼和邏輯代碼相互獨(dú)立
函數(shù)單一原則

let checkType = (function() {
    let rules = {
        email (str) {
            return //.test(str);
        }
        ...
    };
    
    return {
        check (str, type) {
            return rules[type]? rules[type]() : false;
        }
        addRule (type, fn) {
            rules[type] = fn;
        }
    }
})();

可擴(kuò)展性的表現(xiàn)形式

對(duì)原生對(duì)象、庫(kù)、框架的擴(kuò)展

1. prototype

2. jquery的擴(kuò)展性
   三個(gè)API:$.extend()、$.fn和$.fn.extend()

3. vue擴(kuò)展
添加全局方法或?qū)傩?添加全局資源: 過(guò)濾器、指令、過(guò)渡
通過(guò)全局mixin添加一些組件選項(xiàng)
添加vue實(shí)例方法
基于vue的擴(kuò)展[ 在組件或插件 install]

日常開發(fā)中

函數(shù)寫法優(yōu)化

function formatStr (str) {
    return str.replace(/(d{4})(d{2})(d{2})(d{2})(d{2})(d{2})/, "$1-$2-$3 $4:$5:$6");
}

function formatStr(str, type) {
    let i = 0;
    let _type = type || "xxxx-xx-xx xx:xx:xx";
    return _type.replace(/x/g, () => str[i++]);
}
function createPhoneNumber(numbers){
    var format = "(xxx) xxx-xxxx";
    let i = 0;
    return format.replace(/x/g, () => numbers[i++]);
}

who like it?

// 模版字符串 or 手動(dòng)拼寫
function likes(names) {
    let template = [
        "no one likes this",
        "{name} likes this",
        "{name} and {name} likes this",
        "{name}, {name} and {name} likes this",
        "{name}, {name} and {n} others likes this"
    ];
    let idx = Math.min(names.length, 4);
    
    template[idx].replace(/{name}|{n}/g, (value) => {
        return value === "{name}" ? names[idx++]: names.length;
    });
    
}

shortest word?

// apply | call
function findShortest (s) {
    return Math.min.apply(null, s.split(" ").map((val) => val.length));
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95091.html

相關(guān)文章

  • 簡(jiǎn)介:CII最佳實(shí)踐徽章 - CNCF畢業(yè)標(biāo)準(zhǔn)要求之一

    摘要:已經(jīng)實(shí)現(xiàn)并維護(hù)了核心基礎(chǔ)結(jié)構(gòu)計(jì)劃的最佳實(shí)踐徽章。年中國(guó)開源峰會(huì)提案征集現(xiàn)已開放在中國(guó)開源峰會(huì)上,與會(huì)者將共同合作及共享信息,了解最新和最有趣的開源技術(shù),包括容器云技術(shù)網(wǎng)絡(luò)微服務(wù)等并獲得如何在開源社區(qū)中導(dǎo)向和引領(lǐng)的信息。 從沙箱或孵化狀態(tài)畢業(yè),或者作為一個(gè)新項(xiàng)目加入作為一個(gè)畢業(yè)項(xiàng)目,項(xiàng)目必須符合孵化階段標(biāo)準(zhǔn)以及: 有來(lái)自至少兩個(gè)機(jī)構(gòu)的提交者。 已經(jīng)實(shí)現(xiàn)并維護(hù)了核心基礎(chǔ)結(jié)構(gòu)計(jì)劃(CII)...

    jzman 評(píng)論0 收藏0
  • 筆記: node最佳實(shí)踐1 - 項(xiàng)目工程最佳實(shí)踐

    摘要:原文閱讀工程結(jié)構(gòu)最佳實(shí)踐組件化按照功能劃分按照組件劃分層次化不要在中寫太多業(yè)務(wù)邏輯,專注層業(yè)務(wù)層要單獨(dú)抽出數(shù)據(jù)庫(kù)層單獨(dú)抽出化把常用組件做成包分離的和配置化環(huán)境感知根據(jù)不同環(huán)境使用不同配置 showImg(https://segmentfault.com/img/bVYQsC?w=2558&h=817); 原文閱讀: nodebestpractices 1 工程結(jié)構(gòu)最佳實(shí)踐 1.1 組件...

    APICloud 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<