为了账号安全,请及时绑定邮箱和手机立即绑定

代码优化疑惑

代码优化疑惑

慕田峪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 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号