第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

解耦誰(shuí)能給形象的解釋一下,能附帶代碼最好

解耦誰(shuí)能給形象的解釋一下,能附帶代碼最好

桃花長(zhǎng)相依 2018-08-07 14:09:23
讀一些js,node的相關(guān)書(shū)籍總是提到解耦這個(gè)詞匯。不明白什么意思,希望有人能給比較形象的解釋一下
查看完整描述

1 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

打個(gè)比方說(shuō),你有如下代碼:

var filterUsers = function(cb){
    $.get('xxx-url')
    .done(function(users){        
        var leftUsers = users.filter(user => user.age > 20);
        cb(leftUsers);
    });
};

這是一個(gè)非常簡(jiǎn)單的,異步獲取用戶數(shù)據(jù),并且過(guò)濾掉年齡小于等于20歲的人后,將剩下的用戶數(shù)據(jù)返回的方法。

那么現(xiàn)在我希望你寫一個(gè)測(cè)試用例,測(cè)試一下你的“過(guò)濾”部分的邏輯?怎么辦?這時(shí)候如果不修改filterUsers源碼就很難測(cè)試了,因?yàn)槔锩骜詈现鎸?shí)的ajax異步請(qǐng)求,莫非測(cè)試一個(gè)小小的“過(guò)濾”邏輯,你還要搭一個(gè)服務(wù)器給她,然后寫各種不同的數(shù)據(jù)返回的服務(wù)么?這也活得太累了。

但如果我們把獲取異步數(shù)據(jù)的部分提取出去,像這樣:

var UserService = require('./UserService');var filterUsers = function(cb){
    UserService
        .getUsers()
        .done(function(users){            var leftUsers = users.filter(user => user.age > 20);
            cb(leftUsers);
        });
    });
};

這時(shí)候里面不再耦合那個(gè)具體的異步操作,而是引入了一個(gè)叫UserService的模塊,那當(dāng)我們測(cè)試“過(guò)濾”部分邏輯的時(shí)候,只要替換掉這個(gè)UserService,用一個(gè)返回假數(shù)據(jù)的模塊,就可以輕松的測(cè)試各種數(shù)據(jù)返回的情況下,“過(guò)濾”邏輯的工作狀況是否正常了。

這里就是把過(guò)濾用戶和獲取全部用戶數(shù)據(jù)兩個(gè)部分,解藕了哦!


查看完整回答
反對(duì) 回復(fù) 2018-09-16
  • 1 回答
  • 0 關(guān)注
  • 764 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)