본문 바로가기

PMD

[한글화 시리즈-06] Coupling Rules

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();
  }
}


해당 URL: http://pmd.sourceforge.net/pmd-4.2.6/rules/coupling.html