javascript - 代码优化疑惑
本文介绍了javascript - 代码优化疑惑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
一句话概括就是代码高耦合了, 需求稍微有点变化, 就会牵涉到改很多代码, 维护起来感觉好困难, 虽然效果什么的实现了, 但是代码特别差, 求大神指导.
举个例子:
我目前写的代码是这样的:
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
, 貌似影响性能, 求教怎么优化自己的代码, 怎么解耦, 有什么好的书推荐吗.
可能我描述的问题不是太清楚, 总之就是代码之间高耦合, 如何让代码低耦合
解决方案
其实这个时候用闭包,来封闭你的所谓认为 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才是你应该去看!
这篇关于javascript - 代码优化疑惑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文