Coupling Rules
이 룰셋은 객체들과 패키지들 간의 부적절한 결합(coupling)에 관한 룰들을 포함한다.
CouplingBetweenObjects
이 룰은 한 객체 안에 유니크한 속성(unique attributes), 지역 변수들(local variables)과 반환 타입들(return types)의 숫자를 카운트 하며, 특정 한계점(기본 20개)을 넘은 너무 높은 수준의 객체간의 결합도를 경고한다.
import com.Blah; import org.Bar; import org.Bardo; public class Foo { private Blah var1; private Bar var2; //많은 수의 imports들과 유니크한 객체들을 포함하여 결합도를 높이는 것은 좋지 않다. void ObjectC doWork() { Bardo var55; ObjectA var44; ObjectZ var93; return something; } }
ExcessiveImports
하나의 객체 안에 과도한 imports, 많은 량의 imports는 높은 수준의 결합(coupling)을 의미한다. 이 룰은 각각의 import를 카운트하여 특정 한계점(기본 30개)을 넘으면 룰 위반을 경고한다.
import blah.blah.Baz; import blah.blah.Bif; // 18의 같은 package내의 다른 import들 // 높은 수준의 결합을 의심해야한다. public class Foo { public void doWork() {} }
LooseCoupling
HashSet과 같은 구현된 객체(implementation type)를 사용하는 것 대신에, Set과 같은 인터페이스(interface)를 이용해야 한다.
//나쁜 예 import java.util.*; public class Bar { // ArrayList 대신 List를 사용하자. private ArrayList list = new ArrayList(); // HashSet 대신에 Set을 사용하자. public HashSet getFoo() { return new HashSet(); } } //좋은 예 public class Bar { private List list = new ArrayList(); public Set getFoo() { return new HashSet(); } }