티스토리 뷰
"Add a private constructor to hide the implicit public one."
유틸 클래스에서는 public 생성자가 없어야 합니다.
유틸 클래스 만들 때는 private 생성자를 추가해 주세요.
public class ValidatorUtil {
private ValidatorUtil() {
throw new IllegalStateException("Utility class");
}
...
}
Utility classes should not have public constructors (squid:S1118)
Code smell Major
Utility classes, which are collections of static
members, are not meant to be instantiated. Even abstract utility classes, which can be extended, should not have public constructors.
Java adds an implicit public constructor to every class which does not define at least one explicitly. Hence, at least one non-public constructor should be defined.
Noncompliant Code Example
class StringUtils { // Noncompliant public static String concatenate(String s1, String s2) { return s1 + s2; } }
Compliant Solution
class StringUtils { // Compliant private StringUtils() { throw new IllegalStateException("Utility class"); } public static String concatenate(String s1, String s2) { return s1 + s2; } }
Exceptions
When class contains public static void main(String[] args)
method it is not considered as utility class and will be ignored by this rule.
'리팩토링(스프링기반)' 카테고리의 다른 글
Remove this "BigDecimal" constructor (0) | 2019.01.08 |
---|---|
java.nio.Files을 이용한 파일 삭제 (0) | 2019.01.08 |
동일 처리를 하는 catch문 합치기 (0) | 2019.01.08 |
private method의 @Transactional 제거 (0) | 2019.01.08 |
Map 전체 내용을 읽을 때 Key, Value를 모두 사용한다면 "entrySet"을 사용하라 (0) | 2019.01.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- restful서비스
- 샘플
- example
- 스프링
- ag grid
- Javascript
- 스프링부트
- mybatis
- springboot
- listToMap
- 메시지
- cache
- Spring Boot
- lombok
- UI
- java
- oracle
- 타임리프
- AG-GRID
- spring
- thymeleaf
- 그리드
- mapToList
- SHEETJS
- 설정
- RESTful
- sample
- REST
- 예제
- 엑셀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함