안녕하세요 강의를 통해 controller -> service -> repository로 스프링 데이터 흐름이 가는 것을 이해했습니다.
service에서 주로 함수 로직을 처리하는 기능인것도 알게 되었습니다.
만약에 데이터 저장과 데이터 불러오기 기능 2가지 구현할 경우
저는 클린코드 작성하기 위해 만약 저장함수와 불러오기 함수가 복잡하고 길 경우,
저장 함수와 불러오기 함수 내부의 각 기능별로 또 함수화(함수 내부의 함수)하여 이렇게 모듈화 시켜 놓습니다
그럼 실제 기능은 2개인데 service 클래스 안에 함수 수는 7개가 됩니다
만약에 실제기능도 더 많고 더 복잡하여 많이 모듈화 해서 service 클래스 안에 함수가 1000개 이상이 되면 나중에 가독성이 많이 떨어지지 않나 싶어 물어봅니다.
이럴때 service 클래스 안에서 저장 함수는 저장 함수대로, 불러오기 함수는 불러오기 함수대로 묶어서 가독성 좋게 표현하는 방법이 없는지 궁금합니다.
아니면 이렇게 service 클래스 안에 함수 수가 많을 경우 별다른 방법이 없는지 알려주시면 감사합니다.
안녕하세요. 신동아님, 공식 서포터즈 David입니다.
우선, 코드를 보여주시지 않아서 저장 함수가 어떻게 여러 개로 분리될 수 있는지 모르겠습니다. 코드를 보여주시면 더욱 명확하게 답변 드릴 수 있을 것 같습니다.
만약 말씀하신대로 분리해야 한다면, 저장함수 자체를 관심사에 따라 다시 분리해야 하지 않을까 싶습니다.
예를 들어, 현재 저장함수에 Member, Team, Coupon 등을 저장하는 함수들이 모여있고, 이로 인해 하나의 클래스에 너무 많은 함수가 존재한다면 Member저장함수, Team저장함수 등으로 분리하여 유지보수성을 높이는 것도 고려해볼 수 있습니다.
감사합니다.
답글
David 님이 말씀하신것처럼 '관심사' 별로 Service를 나눠도 될거 같고 혹은 Domain 에 따라 객체를 만들어서 Service -> Domain 객체를 호출하는 형태로 해도 될것 같습니다.
답글