“数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递”。
这是网上找的数据耦合的定义,我想问问这个定义中的两个模块指的是什么啊?
如果我想做一个创建和插入节点的功能,写一个创建节点的函数,再写一个插入节点的函数,这两个函数能算两个模块吗?
function create(id){
var box=document.createElement("div")
box.setAttribute("id",id)
return box
}
function append(id){
var box=create(id)
document.body.appendchild(obj)
}
这个能说append函数中append和create数据耦合了吗?
------解决方案--------------------
a访问b 那么 a和b 是耦合的
你那个就是 耦合的 因为 append中访问了 create
怎么解耦?
function create(id){
var box=document.createElement("div")
box.setAttribute("id",id)
return box
}
function append(obj){
document.body.appendchild(obj)
}
//调用
var box=create(id)
append(box);
那么现在 append 和 create 解耦了 互相不知道对方的存在
因为 调用代码(也叫 业务逻辑) 组织了他们的关系
------解决方案--------------------
模块是抽象的概念,LZ可以把你自己的两个函数看作两个模块,也可以把一组通用功能的集合看作一个模块。软件工程中的概念,本来就不好说~~
从定义上看,LZ的这两个模块确实是数据耦合了,数据耦合是不可避免的,尽量避免把参数当作函数内部的流程控制的开关变量,因为那样就是控制耦合了。
摘抄一段软工的耦合类型的介绍: