亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

代碼優化疑惑

代碼優化疑惑

慕田峪7331174 2018-10-22 14:14:58
一句話概括就是代碼高耦合了, 需求稍微有點變化, 就會牽涉到改很多代碼, 維護起來感覺好困難, 雖然效果什么的實現了, 但是代碼特別差, 求大神指導.舉個例子:我目前寫的代碼是這樣的:function start() {    var data = null    $.get('/s/api..', function(res) {        data = res    })    ...一堆邏輯后用two方法    two(data)    }function two(data) {    邏輯....然后用到了thr方法    thr(data.a, data.b)}function thr(a, b) {    var thrA = null    ...一對邏輯后for(a, b, thrA)}function for(a, b, thrA) {    ...邏輯代碼}這樣編寫的代碼之間高耦合, 需求變化什么的都很難維護.假如thr想直接用start中的屬性c,我想到就是傳給two再傳給thr,因為start不需要用到thr方法, 但需求修改后發現thr又需要用到start請求的數據; 如果用全局的話就會有很多var, 貌似影響性能, 求教怎么優化自己的代碼, 怎么解耦, 有什么好的書推薦嗎. 可能我描述的問題不是太清楚, 總之就是代碼之間高耦合, 如何讓代碼低耦合
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

其實這個時候用閉包,來封閉你的所謂認為 var 會影響性能,是最好不夠。

例如:

(function() {

    var c;

    function start() {

        var data = null

        $.get('/s/api..', function(res) {

            data = res

        })

        ...一堆邏輯后用two方法

        two(data)    

        // using c

    }

    function two(data) {

        邏輯....然后用到了thr方法

        thr(data.a, data.b)

        // using c

    }

    function thr(a, b) {

        var thrA = null

        ...一對邏輯后for(a, b, thrA)

        // using c

    }

    function for(a, b, thrA) {

        ...邏輯代碼

        // using c

    }

})();

但,有時會你又希望這個閉包,可能有些東西是需要被外部使用的。那么,可以改裝成類:

var Bus = function(options) {

    var c;

    function start() {

        var data = null

        $.get('/s/api..', function(res) {

            data = res

        })

        ...一堆邏輯后用two方法

        two(data)    

    }

    function two(data) {

        邏輯....然后用到了thr方法

        thr(data.a, data.b)

    }

    function thr(a, b) {

        var thrA = null

        ...一對邏輯后for(a, b, thrA)

    }

    function for(a, b, thrA) {

        ...邏輯代碼

    }

    

    return {

        start: start,

        getC: function() {

            return c;

        }

    };

}


// using

var bus = new Bus();

bus.start();

console.log(bus.getC());

或許ES6才是你應該去看!

查看完整回答
反對 回復 2018-11-29
  • 1 回答
  • 0 關注
  • 447 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號