모듈화 : 역할에 따라 코드를 분리하는 작업
유지 보수 (maintainability)
- 유지 보수를 편하게 하기 위해 여러 로직이 엉켜있는 복잡한 코드는 줄인다.
가독성 (readability)
- 어려운 로직을 되도록 쉽게 풀어서 쓴다.
- 프로젝트의 구조도 한 눈에 볼 수 있도록 직관적이여야 한다.
테스트 가능성 (testability)
- 프로그램이 모듈화가 잘 되어 있고, 각각의 코드가 목적과 역할이 분명하고, 함수가 하나의 역할만 수행하면 테스트를 하기 쉽고 디버깅에 용이하다.
프로젝트를 구성하는 요소 세가지를 세가지 역할로 구분한 패턴
화면에 보여주는 역할
클라이언트와 상호작용
주로 프론트엔드가 담당
사용자의 요청을 처리하는 역할
View(사용자)와 Model(데이터)를 이어주는 가교 역할
http 요청이 들어왔을 때 request, reponse를 처리함
View에서 사용자의 request를 받으면, Model에게 데이터를 요청해서 데이터를 받은 다음 View에게 전달
데이터 처리를 담당
염려 혹은 관심사의 분리 (Seperation of Concerns)
- MVC 각각의 역할이 분명하다.
- View는 UI를 담당
- Model은 데이터와 관련된 로직을 담당
- 오로지 Controller만 Model에 접근 가능
동시적인 개발 (Simultaneous Development)
- MVC 각각의 역할이 나눠져 있기 때문에 개발자도 역할 별로 나눠서 맡은 역할만 집중해서 작업할 수 있어서 프로젝트 협업이 가능하다.
수정의 용이함 (Ease of Modification)
- 디버깅 할 때 다른 역할을 맡은 요소를 최대한 건드리지 않고, 오류가 있는 로직만 처리할 수 있다.
테스트-주도 개발(Test Driven Development)
- 각각의 역할을 맡은 요소의 각각의 모듈들을 각각 테스트하기 쉽다.