인프런 커뮤니티 질문&답변
enum 에 도메인 로직이 들어가도 될까요?
해결된 질문
작성
·
19
·
수정됨
1
안녕하세요!
현업에서 도메인(core) 모듈에 enum 들도 같이 두고, 타입 판단 로직 등 도메인 비즈니스 로직을 enum 클래스 내부에도 응집시켜 놓는 편인데요~ (bo 객체 클래스가 따로 존재하지 않거나 객체 클래스 보다는 enum 클래스에서 판단하는 것이 역할이 더 맞다고 생각되는 경우 ex enum 생성 static 메서드 등)
현재 예시 프로젝트의 구조에서는 core-enum이 core-api 의 도메인 로직 등을 의존하지 않고 완전 독립적으로 존재하기 때문에 enum class에는 비즈니스 로직이 존재하면 안된다는 것을 의도하신 것 같아 질문드립니다!
enum 은 로직에서 아예 제외시키는 편이신가요? 그렇다면 이유가 궁금합니다.
답변 2
1
안녕하세요 질문 감사드립니다!
강의에서도 언급하였던 것 같긴한데요!
core-enum이 core-api 의 도메인 로직 등을 의존하지 않고 완전 독립적으로 존재하기 때문에 enum class에는 비즈니스 로직이 존재하면 안된다는 것을 의도하신 것 같아
요 내용을 기준으로 core-enum 모듈을 구성한 것은 아닙니다!
core-enum 이 존재하는 이유는 enum 값을 db-core 모듈(앞으로 생길 모듈들)에서도 사용해야하는데 enum을 core-api에 두면db-core -> core-api 이렇게 큰 규모로 모듈 의존성을 걸어야하다보니 그를 해결하기 위해 모듈이 분리되어있다고 보시면 됩니다!
(이 부분은 사실 다음 수준의 모듈 아키텍처로 넘어가면 깔끔하게 개선이 되긴합니다)
그래서 원래 주신 질문에 답변을 드리면 enum class 에 적절한 비즈니스 로직은 존재해도 된다고 생각합니다, 저도 실무에서 그렇게 많이 작성하구요 😃
모쪼록 답이 되었길 바랍니다! 완강까지 잘 부탁드리고 수강평도 기대하겠습니다! 감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. worldbright0님.
코드를 작성하면서 enum에 도메인 로직을 포함시킬지 여부는 설계 선택의 문제입니다. 프로젝트의 전체 구조와 각 클래스의 역할에 따라 다르게 접근할 수 있습니다.
도메인 로직과 enum
enum의 사용 이유:enum은 고정된 상수 집합을 표현하는 데 주로 사용되며, 상태를 명확히 나타낼 수 있습니다.
- 타입 안전성과 코드의 가독성을 높여주며, 특정 동작이나 상태 변화를 제어하는 데 유용합니다.
 
비즈니스 로직 결합:
- 장점: 
enum자체 내에 도메인 로직을 포함하면, 특정 타입에 대한 동작을 명확하게 정의할 수 있고, 타입과 관련된 규칙들을 쉽게 관리할 수 있습니다.
 - 단점: 
enum이 너무 많은 책임을 가지면, 관리가 어려워지고 테스트가 복잡해질 수 있습니다. 특히 복잡한 비즈니스 로직이 포함될 경우, 코드의 응집성을 확보하기 어려워질 수 있습니다.
 
- 장점: 
 예시 프로젝트에서의 구조:
core-enum모듈과 별도로 독립되어 있다는 것은 모듈의 응집도가 떨어질 수 있음을 의미합니다. 이는enum에 비즈니스 로직을 포함시키지 않아 코드의 명확성을 높이려는 의도로 보입니다.
- 모듈 간의 의존성을 줄이려는 설계라고도 해석할 수 있습니다.
 
관련하여 더 많은 의견과 토론을 통해 이해를 돕고 싶으시다면 아래 게시물을 참고하시기 바랍니다. 비슷한 주제의 논의가 포함되어 있습니다:
- core-enum 모듈에 대하여 - 
core-enum모듈과 도메인 계층의 설계를 이해하는 데 도움이 될 수 있습니다.
 
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





답변 감사드립니다! 잘 이해했습니다. ㅎㅎ
완강까지 화이팅 해볼게요!