controller 3단분리에 대해 질문이 있습니다.
강의를 보면 controller에서 작업을 마무리하고, 이후에 코드를 정리하면서 controller, service, repository로 3단 분리를 하시는데,
실제로 처음부터 3단 분리를 하면서 코드를 짜려니까 머리 속에 로직이 잘 정리가 안되더라고요.
처음부터 역할에 맞게 분리를 하며 코딩을 하시는지, 아니면 처음에는 머리 속의 로직을 그대로 쭉 코딩하신 후에 나중에 정리를 하시는 편이신지 궁금합니다.
답변 1
1
안녕하세요, Dom poo님!!! 😊 좋은 질문 올려주셔서 감사드립니다!!!
결론부터 말씀드리면 반반인 것 같습니다! 왜 반반이냐면요..!!
제가 개발을 시작한지 얼마 되지 않았을 때에는 처음부터 역할에 맞게 분리하기 : 코딩하거나 그림을 그린 후 정리하기 가 거의 10 : 90 정도였습니다. 어느 정도의 역할을 클래스마다 가져야 하는지, 어느 정도 단위로 코드를 분리해 두어야 추후 유지보수가 쉬운지에 대한 감이 없었으니까요...! 이때는 그냥 막 코딩해보고, 코드들을 이렇게도 분리해보고~ 저렇게도 분리해보면서 시간을 많이 들였던 것 같아요! 연습장에 로직의 흐름을 먼저 작성한 후 코드를 나중에 짜기도 했고요.
물론, Spring과 같은 "프레임워크"를 사용하게 되면 Controller / Service / Repository라는 큰 뼈대가 잡혀있기에 어느정도 코드를 처음부터 역할에 맞게 분리할 수 있는 장점이 있습니다. "프레임워크"의 목적 자체가 어느정도 패턴을 정형화하여 코드의 품질이 숙련도 영향을 덜 받게 해주니까요. 그래도 알고 있는 것과 실제 코드를 작성하며 구현하는 것은 달라서 선 코딩 후 정리를 많이 했던 것 같아요.
하지만 지금은 어떤 곳에 어떤 코드가 위치하면 유지보수가 쉬운지 잘 이해하고 있다보니 처음부터 역할에 맞게 분리하기 : 코딩하거나 그림을 그린 후 정리하기 가 거의 70 : 30 정도인 것 같습니다. 많은 기능을 구현하고 유지보수한 경험이 있다보니 A 기능은 이런식으로 만들었을 때 효과적이고 B 기능은 이런식으로 개발해야 코드의 역할과 책임이 잘 나눠진다는 것을 알고 있거든요.
물론 지금도 낯선 기술을 사용해 구현하거나 굉장히 복잡한 부분을 구현할 때는 머릿속으로 완벽한 코드를 떠올리는 것은 어렵기 때문에 먼저 코드를 작성한 후 작성한 코드들을 살펴보며 클래스나 함수의 역할, 이름 등을 조정해나가는 편입니다. 결국 사람이 머리로 생각할 수 있는 복잡도는 한계가 있다 보니 앞으로도 100 : 0이 되지는 않을 것 같습니다 ㅎㅎㅎ
답변이 도움이 되었으면 좋겠네요!!!
혹시나 또 궁금하신 점 있으시면 편하게 질문 남겨주세요, 감사합니다! 🙏🙏
패키지 구분에 대해 궁금한게 있습니다
0
13
1
리액트 관련 질문이 있습니다.
0
63
2
스프링부트 버전
0
69
2
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
0
57
2
33강. UserLoanHistory의 관계성에 대한 질문
1
55
2
Java JDK 버전 문의의 건
0
132
2
ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.
0
85
3
h2 console 접속했을 테이블 질문
1
64
1
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
0
74
2
15강. updateUser() 질문
0
55
2
깃허브 질
0
81
2
여기까지 다 끝냈다고 하셨는데
0
78
2
왜안될까요
0
69
2
MySQL 창이안ㄴ뜹니다
0
58
2
포스트맨
0
49
1
spring 개념적인 질문
0
71
2
인텔리제이 샘플코드 실행 안됨 오류
0
139
2
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
0
82
1
마이그레이션 오류입니다.
0
169
3
Whitelabel Error Page 오류가 났습니다.
0
162
2
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
1
90
3
궁금한게 있습니다.
0
57
2
DTO 관련
0
69
2
궁금한게 있습니다!
0
65
2





