Modular Design
Coupling
Coupling is a measure of the interdependence among
software modules.
Low coupling is good.
data coupling (two modules are data-coupled if all arguments are homogeneous data items. That is, every argument is either a simple argument or a data structure in which all elements are used by the calling module)
stamp coupling (two modules are stamp-coupled if a data structure is passed as an argument, but the called module operates on only some of the individual components of that data structure)
control coupling (two modules are control-coupled if one passes an element of control to the other module; that is, one module explicitly controls the logic of the other module)
common coupling (two modules are common-coupled if they both have access to the same global data)
content coupling (two modules are content-coupled if one directly references the contents of the other)
High coupling is bad.
When there are several answers, pick the worst one - the one with highest coupling.
However for closely related modules, high coupling is good, low coupling is bad.