정적 메서드만 있는 클래스를 인스턴스화해선 안 됩니다

 

정적 메서드는 인스턴스 없이 액세스할 수 있습니다. 따라서 정적 메서드만 있는 클래스를 인스턴스화할 이유가 없습니다.

규칙을 어긴 코드

public class TextUtils {
  public static String stripHtml(String source) {
    return source.replaceAll("<[^>]+>", "");
  }
}

public class TextManipulator {

  // ...

  public void cleanText(String source) {
    TextUtils textUtils = new TextUtils(); // 규칙을 어긴 코드

    String stripped = textUtils.stripHtml(source);

    //...
  }
}

규칙을 준수한 해결책

public class TextUtils {
  public static String stripHtml(String source) {
    return source.replaceAll("<[^>]+>", "");
  }
}

public class TextManipulator {

  // ...

  public void cleanText(String source) {
    String stripped = TextUtils.stripHtml(source);

    //...
  }
}

같이보면 좋은 자료

  • rule:java:S1118 - 유틸리티 클래스들은 public 생성자를 갖고 있어선 안됩니다.

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project