인프런 커뮤니티 질문&답변

Dompoo님의 프로필 이미지
Dompoo

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

18강. Controller를 3단 분리하기 - Service와 Repository

controller 3단분리에 대해 질문이 있습니다.

해결된 질문

작성

·

824

3

 강의를 보면 controller에서 작업을 마무리하고, 이후에 코드를 정리하면서 controller, service, repository로 3단 분리를 하시는데,

실제로 처음부터 3단 분리를 하면서 코드를 짜려니까 머리 속에 로직이 잘 정리가 안되더라고요.

처음부터 역할에 맞게 분리를 하며 코딩을 하시는지, 아니면 처음에는 머리 속의 로직을 그대로 쭉 코딩하신 후에 나중에 정리를 하시는 편이신지 궁금합니다.

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요, Dom poo님!!! 😊 좋은 질문 올려주셔서 감사드립니다!!!

결론부터 말씀드리면 반반인 것 같습니다! 왜 반반이냐면요..!!

제가 개발을 시작한지 얼마 되지 않았을 때에는 처음부터 역할에 맞게 분리하기 : 코딩하거나 그림을 그린 후 정리하기 가 거의 10 : 90 정도였습니다. 어느 정도의 역할을 클래스마다 가져야 하는지, 어느 정도 단위로 코드를 분리해 두어야 추후 유지보수가 쉬운지에 대한 감이 없었으니까요...! 이때는 그냥 막 코딩해보고, 코드들을 이렇게도 분리해보고~ 저렇게도 분리해보면서 시간을 많이 들였던 것 같아요! 연습장에 로직의 흐름을 먼저 작성한 후 코드를 나중에 짜기도 했고요.

물론, Spring과 같은 "프레임워크"를 사용하게 되면 Controller / Service / Repository라는 큰 뼈대가 잡혀있기에 어느정도 코드를 처음부터 역할에 맞게 분리할 수 있는 장점이 있습니다. "프레임워크"의 목적 자체가 어느정도 패턴을 정형화하여 코드의 품질이 숙련도 영향을 덜 받게 해주니까요. 그래도 알고 있는 것과 실제 코드를 작성하며 구현하는 것은 달라서 선 코딩 후 정리를 많이 했던 것 같아요.

 

하지만 지금은 어떤 곳에 어떤 코드가 위치하면 유지보수가 쉬운지 잘 이해하고 있다보니 처음부터 역할에 맞게 분리하기 : 코딩하거나 그림을 그린 후 정리하기 가 거의 70 : 30 정도인 것 같습니다. 많은 기능을 구현하고 유지보수한 경험이 있다보니 A 기능은 이런식으로 만들었을 때 효과적이고 B 기능은 이런식으로 개발해야 코드의 역할과 책임이 잘 나눠진다는 것을 알고 있거든요.

물론 지금도 낯선 기술을 사용해 구현하거나 굉장히 복잡한 부분을 구현할 때는 머릿속으로 완벽한 코드를 떠올리는 것은 어렵기 때문에 먼저 코드를 작성한 후 작성한 코드들을 살펴보며 클래스나 함수의 역할, 이름 등을 조정해나가는 편입니다. 결국 사람이 머리로 생각할 수 있는 복잡도는 한계가 있다 보니 앞으로도 100 : 0이 되지는 않을 것 같습니다 ㅎㅎㅎ

답변이 도움이 되었으면 좋겠네요!!!

혹시나 또 궁금하신 점 있으시면 편하게 질문 남겨주세요, 감사합니다! 🙏🙏

Dompoo님의 프로필 이미지
Dompoo
질문자

감사합니다! 스프링부트 자체 외의 실제 현업에서 어떤 방식으로 일을 하는지가 정말 궁금했었는데, 궁금증이 많이 풀렸습니다.

좋은 강의입니다!

Dompoo님의 프로필 이미지
Dompoo

작성한 질문수

질문하기