Replies: 1 comment
-
Index.
🌱 Enum vs. Lazy Holder for ErrorCodes
👀 Enum 에러코드 구현을 선호하는 이유앞서 언급한 특징으로 인해서도 enum 구현을 더 선호할 만하다고 도출할 수 있습니다.
➕ 번외: 추상 클래스로 Lazy Holder 방식 보강하기반복적인 구현 대신 하나의 상위 클래스에서 인터페이스의 모든 추상 메서드를 구현합니다. // 의도에 따라 추상 클래스로 할 수도 있고, 일반 클래스로 할 수도 있습니다. (예시는 추상 클래스)
public abstract class ErrorCodeLazy implements ErrorCode {
// 이곳에 ErrorCode 인터페이스의 모든 필요 기능을 구현합니다.
} 이하는 이 추상 클래스를 사용해 Lazy Holder 베이스로 에러코드를 구현하는 코드 예시입니다. public final class BoardErrorCodeLazy extends ErrorCodeLazy {
// private 생성자로 외부에서 인스턴스를 추가할 수 없도록 합니다. (마치 enum처럼 이곳에서 제공하는 것만 이용)
private BoardErrorCodeLazy(/* 여기에 필요한 매개변수를 입력합니다. */) {
super(/* 여기에 필요한 매개변수를 전달합니다. */);
}
// 제공할 에러코드를 반환하는 정적 메서드 목록을 작성합니다.
public static BoardErrorCodeLazy BOARD_NOT_FOUND() {
// BoardNotFoundHolder 클래스는 이 메서드가 처음 호출될 때 처음으로 사용됩니다. (이때 클래스 로드)
return BoardNotFoundHolder.INSTANCE;
}
// 제공할 에러코드를 품은 Lazy Holder 클래스를 내부 클래스로 '각각' 작성합니다.
// 자바는 클래스 로드타임에 동시성을 보장하므로, 이 홀더의 INSTANCE는 고유성을 안전하게 보장합니다.
private static class BoardNotFoundHolder {
private static final BoardErrorCodeLazy INSTANCE = new BoardErrorCodeLazy(/* 여기에 필요한 매개변수를 입력합니다. */);
}
} 더 궁금한 게 있는 분들은 리서치를 해 보시거나 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
#61 PR과 관련하여, ErrorCode의 정의 방식에 대해 다른 분들의 의견을 듣고 싶어 Discussion을 열었습니다.
현재 논의되고 있는 ErrorCode는
/common
패키지에 정의되어 공통 인터페이스인ErrorCode
자체가 아닌, 각 기능에서 이를 구현하여 사용하는 개별 ErrorCode를 의미합니다. (ex.BoardCommandErrorCode
,BoardQueryErrorCode
등)아래의 첨부된 코드와 함께 각 방식의 장단점을 정리하였습니다.
추가로 공유하고 싶은 내용이 있으시면 코멘트 남겨주시면 감사하겠습니다🙏
1. Enum 방식
장점
단점
2. Lazy-Holder 방식
장점
단점
new BoardErrorCodeLazyHolder(...)
와 같이 동적으로 객체를 만들 수 있는 여지를 줄 수 있습니다. (개발 도중, 실수 발생 가능성)6 votes ·
Beta Was this translation helpful? Give feedback.
All reactions