耦合

近来在看JavaScript设想形式和开辟实践,内里说到”设想形式的主题老是把稳定的事物和变化的事物分脱离”,这就涉及到相识耦.耦合是一个很广泛的观点,在此只为记录在js中涌现的各种类型的耦合.
数据耦合:一个模块接见另一个模块时,彼此之间是经由过程简朴的数据参数(不是掌握参数/大众数据结构/外部变量)来交流输入输出信息的.网上搜到的诠释,不是很懂!

function create(id) {
  var box = document.createElement('div');
  box.setAttribute('id', id);
  return box;
}
function append(id) {
  var box = create(id);
  document.body.appendChild(box);
}

此处的耦合是因为append函数接见了create函数.
解决方案:

create函数稳定,
function append(obj) {
  document.body.appendChild(obj);
}
var box = create(id);
append(box);

掌握耦合:假如一个模块经由过程传送开关/标志/名字等掌握信息,明显地掌握挑选另一模块的功用,就是掌握耦合.网上搜到的诠释,不是很懂!

var y = 1;
function a(x) {
  if (x) {
    y = 1;
  } else {
    y = 0;
  }
}

function b() {
  if (y == 1) {
    console.log('y is 1');
  } else {
    console.log('y is 0');
  }
}

解决方案:
1.将被挪用模块内的剖断上移到挪用模块中举行

干掉var y = 1;和函数b
function a(x) {
  if (x) {
    console.log('y is 1');
  } else {
    console.log('y is 0');
  }
}

2.被挪用模块分解成多少单一功用的模块
内容耦合:当一个模块直接修正或许操纵另一个模块的数据,或许直接转入另一个模块时,就发生了内容耦合.此时,被修正的模块完整依赖于修正它的模块.额额额,下面的例子和数据耦合的例子有啥差别???

function a() {
  return 'kk';
}
function b() {
  alert(a());
}
b();

解决方案:

a函数稳定
function b(p1) {
  alert(p1);
}
b(a());

另有 标记耦合 非直接耦合 外部耦合 大众耦合,这些都没有在网上找到适宜的js的例子,愿望人人补充!

    原文作者:小被子
    原文地址: https://segmentfault.com/a/1190000008529853
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞