[TIL 2021.11.08] MVC

Kyu·2021년 11월 8일
0

TIL

목록 보기
301/322

맘대로 주절거리는 글

MVC 설계는 개발을 구조화하는 방법이다.

로직을 일정한 틀로 패턴화해서 코드를 더 쉽게 짤 수 있게 도와주는 하나의 추상적인 도구라고 할 수 있다.

여기다 코드를 더 쉽게 짠다는 말은 하나의 뭉텅어리가 파일 하나에 다 쑤셔져있는 코드들을 보수
하기 쉽게 분리한다는 말이다.

Model, View, Controller로 나누어서 말이다.

MVC를 적용하지 않으면 게시판을 만든다면 위와 같은 코드들이 하나의 파일안에 모두 혼재되어 정신을 어지럽게 할 것이다.

MVC로 나누면서 로직을 나눌수 있게 되고 각 역할에 대해 집중할 수 있게 된다.

간단한 어플리케이션에서는 간단하게 모델에서 필요한 데이터셋을 가져와 뷰에 뿌려주기만 하면 되겠지만,

예를들어 "글수정" 하는 사람은 Admin과 사용자 구분을 해서 다른페이지를 보여줘야한다면..로그인한 사용자로부터 권한이 어떻게 되는지 받아서 이에따라 다른처리를 해줘야할 것이다. 더 많은 기능들이 추가되면서 집중해야할 로직에서 집중이 흩어지게 되고 위에서 쓰던 코드를 밑으로 가져오면서 코드 분리가 안되서 가독성도 엄청나게 떨어질 것이다.

MVC패턴은 같은 종류의 로직들끼리 따로 모아서 관리하기 때문에 그 로직에만 집중할수있다.
MVC 각 레이어를 변경해도 다른 레이어에는 영향을 안미친다는 것도 크나큰 장점이고 코드 재활용성도 높아진다.

나는 아직 컨트롤러와 모델을 어떻게 분리해야할지..디비에서 데이터를 가져오고 내보내는 역할만 하는 것이 모델일까? 프로그래밍 언어로 후처리하는것들도 디비에 넣어야할까? 예를들어서 글쓰기를 누르면 10만 포인트를 준다. 유저가 가지고 있는 포인트에서 10만 포인트를 더해서 가져와야한다. 그러면 10만포인트를 주는걸 애초에 디비에 꺼낼떄부터 그렇게 가져와야할지 아니면 모델에서 후처리해서 리턴해야할지, 아니면 컨트롤러에서 더해서 뷰로 내보내줘야하는건지 모르겠다.

모델은 비즈니스 로직을 맡는다고 하는데, 비즈니스 로직이니까 모델에서 해결해야하는거 아닐까?
근데 그런식으로 따지면 컨트롤러에서 하는 역할이 단지 뷰와 모델의 다리역할밖에 안되는데 이게 필요한것일까?

profile
TIL 남기는 공간입니다

0개의 댓글