적절히 잘 사용하면,
- 객체 지향 프로그래밍의 다양한 문제상황에 대한 예방
- 프로그래머 사이의 협업효율 향상
- 프로그래머 사이의 의사소통 증진
- 코드의 안정화 및 최적화
- 코드의 재사용성 증가
예시
스타크래프트에 익숙한 사람이면 4드론이라는 이야기만 들어도 어떻게 전개될지 알 수 있다.
템플릿대로 똑같이 하지 않아도 됨. 템플릿 안에서 조금씩 변형해서 사용해도 된다.
아직은 패턴에 따라 직접 만들어보려 애쓰지 말고 사용 중인 프레임워크(라이브러리)에서 찾아볼 것
애플은 MVC (Model-View-Controller) 아키텍처 사용한다고 표현
source: https://commons.wikimedia.org/wiki/File:ModeleMVC.png
- 이 친구들이 데이터들을 다룰 친구들이냐 (Model),
- 화면을 다룰 친구들이냐 (View),
- 중간 다리를 담당할 친구들이냐 (Controller)
유튜브 얄팍한 코딩사전 채널 "정적 웹은 뭐고 동적 웹은 뭔가요?" 컨텐츠를 보고 작성하였습니다.
https://www.youtube.com/watch?v=C06xRvXIAUk
source: https://commons.wikimedia.org/wiki/File:Scheme_static_page_en.svg
움직이지 않는, 언제 접속해도 같은 리소스를 건네주는 웹사이트. 정적 웹사이트에 접속하면 서버는 마치 진열대에 놓인 상품처럼 이미 프로그래머가 작성해 놓은 파일들을 그대로 클라이언트의 브라우저에 전달한다. 그렇다고 접속할 때마다 같은 화면을 보여주는 것이 정적 웹은 아닌데, 현재 날짜와 시간을 표시하는 페이지, 랜덤 함수로 매 번 다양한 화면을 보여주는 페이지, 서버에 직접 추가적인 내용을 요청해서 받아오는 페이지 등이 있을 수 있기 때문이다. 정적 웹의 기준은 접속할 때마다 받게 되는 HTML, CSS , JavaScript, 이미지, 동영상 파일들의 동일 여부이다. 서버에서 가공해서 제공하는 것이 아니라 프로그래머가 작성한 제품들이 진열되어 있는 것을 그대로 가져가게 하는지 여부이다. 접속할 때마다 내용이 변할 필요가 없는 사이트들인 회사, 학교 소개 페이지, 댓글 기능이 없는 블로그를 예시로 들 수 있다.
source: https://commons.wikimedia.org/wiki/File:Scheme_dynamic_page_en.svg
데이터베이스의 정보를 읽어서 접속할 때마다 최신 정보들을 보여주는 웹페이지
유튜브 얄팍한 코딩사전 채널 "MVC 웹 프레임워크가 뭔가요?" 컨텐츠를 보고 작성하였습니다.
https://www.youtube.com/watch?v=AERY1ZGoYc8
source: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
요소와 기능들이 많아지고 구조가 이것저것 얽힐 수록 코드가 길어지고 난해해진다. 거대해지고 복잡해질 때는 특정 기준으로 분리, 모듈화해서 접근하곤 한다. 웹사이트를 비롯한 소프트웨어는 Model, View, Controller (MVC) 접근법이 많이 사용된다.
- Model: 데이터에 관련된 것. 예시를 확인하자.
- View: 눈에 보이는 것. 웹의 경우 HTML, CSS
- Controller: 무언가를 제어하는 것. 프로그래밍이 이 부분에서 많이 이루어진다.
기능 명세서를 통해 MVC 요소들을 어떻게 나눌 수 있을지 고민해보았다. 앱 개발은 처음이라 정석대로 분리하기는 어렵지만 프로젝트 진입 전에 전체적인 설계와 같이 고민해볼 요소들은 미리 하면 할수록 실제 구현에 드는 시간이 절감되는 효과가 있는듯하다.
과일 재고의 관리버튼이 과일별로 존재하는데 하나의 메서드로 대응할 수 있는 방식에 대해 고민해보았다.
계속 해야할 고민이지만, 가독성 (이해의 편리함)과 절대적인 코드량과는 현재 시점에서는 상반되는 관계처럼 느껴져서 어느정도 절충이 필요해보인다.