해당 글은 클린 코드의 대한 자유로운 의견을 공유하고 작성된 것으로 다양한 의견이나 잘못된 내용이 있으시면 댓글 남겨주시면 감사하겠습니다.
상수를 정의하는 방법으로 interface, 자체 클래스 상수, 내부 final 상수로 만드는 방법이 많지만 Java에서 상수를 정의하라고 만든 Enum 클래스 타입이 존재합니다.
Enum 클래스에서 정의한 상수의 네이밍으로 한 눈에 알아볼 수 있지만, 상세적인 내용을 1개의 네이밍으로 설정하는 것은 쉽지 않은 일입니다.
public enum Type{
TYPE_NAME1(...),
TYPE_NAME2(...),
TYPE_NAME3(...),
TYPE_NAME4(...);
...
}
해당 Enum 클래스의 유지보수성을 높이기 위해서 description 변수를 추가합니다.
public enum Type{
TYPE_NAME1("상황1이 발생하였을 때 타입", ...),
TYPE_NAME2("상황2가 발생하였을 때 타입", ...),
TYPE_NAME3("상황3이 발생하였을 때 타입", ...),
TYPE_NAME4("상황4가 발생하였을 때 타입", ...);
private final String description;
...
}
[description 변수를 사용하여 얻을 수 있는 이점]
1. 디버깅을 진행할 때 Break Point에서 해당 Enum의 변수에 description 변수 내용을 읽고 enum 코드에 접근하지 않아도 의미를 이해할 수 있다.

2. 다른 개발자가 enum 클래스의 접근하여 상수 정보를 조회할 때 정의된 상세 설명을 바로 확인할 수 있다.
public enum Type{
TYPE_NAME1("상황1이 발생하였을 때 타입", ...),
TYPE_NAME2("상황2가 발생하였을 때 타입", ...),
TYPE_NAME3("상황3이 발생하였을 때 타입", ...),
TYPE_NAME4("상황4가 발생하였을 때 타입", ...);
private final String description;
...
}
❓ 여기서 “주석을 작성해서 관리를 하면 되지 않나요?”라고 생각이 들 수 있습니다.
Custom Annotation(@Description), JavaDoc 기반으로 주석을 추가할 수 있지만, 실질적으로 상수가 점점 많아질 수록 상수가 한 눈에 들어오지 않게 됩니다.
[Custom Annotiation]
public enum Type{
@Description("상황1이 발생하였을 때 타입")
TYPE_NAME1(...),
@Description("상황2가 발생하였을 때 타입")
TYPE_NAME2(...),
@Description("상황3이 발생하였을 때 타입")
TYPE_NAME3(...),
@Description("상황4가 발생하였을 때 타입")
TYPE_NAME4(...);
...
}
public enum Type{
/**
* 상황1이 발생하였을 때 타입
*/
TYPE_NAME1(...),
/**
* 상황2가 발생하였을 때 타입
*/
TYPE_NAME2(...),
/**
* 상황3이 발생하였을 때 타입
*/
TYPE_NAME3(...),
/**
* 상황4가 발생하였을 때 타입
*/
TYPE_NAME4(...);
...
}
예시 코드에서는 4가지의 상수만 존재하지만 10개가 넘어가면 코드를 처음 접근하였을 때 오히려 복잡해보일 수 있습니다.
제가 생각하고 있는 Enum 클래스의 Description 변수의 관한 내용이었으며, 다른 분들의 생각이 궁금합니다.

'JAVA' 카테고리의 다른 글
Koltin Gradle, Groovy Gradle 비교 (0) | 2025.01.21 |
---|---|
R2DBC-Proxy(DB Connection Proxy) 적용하기 (3) | 2024.07.22 |
Jackson Library 이해하기(Feat. Jackson NullPointerException) (0) | 2024.05.04 |
Spring에서 Notification을 구현해보자(WebFlux, Reactor Sinks, SSE) (2) | 2024.02.27 |
Spring Cache를 파헤쳐 보자!(WebMvc, WebFlux) (0) | 2023.12.13 |
댓글