저의 회고 방식은 5F 입니다.
- Fact -> 사실, 무슨 일이 있었나요 ?
- Felling -> 느낀점, 어떤 느낌이 들었나요 ?
- Finding -> 배운 점, 어떤 인사이트를 얻었나요 ?
- Future action -> 향후 행동, 앞으로 무엇을 해야 할까요 ?
- Feedback -> 피드백, 앞서 정한 향후 행동을 실천해본 뒤, 이에 대해 어떤 피드백을 받았나요?
사실, 무슨 일이 있었나요?
10월, 우연히 우아한테크코스 선발 일정을 보고 저는 2024년 2월 졸업 예정자로써, 더 나은 성장을 하기 위해 우아한 테크코스 백엔드 부분에 지원했습니다.
사실 우아한테크코스는 저에게 '잘하는 사람만 가는 곳'이라는 인식이 박혀 있었고, 최종 합격 보다는 프리코스를 하면서 성장을 해보자 하며 지원했던 것 같습니다..!
1주차 미션은 숫자- 야구게임에 관한 것이었고, 읽어봤을 때는 기능 구현에 있어서 어렵진 않겠다고 생각이 들었습니다.
느낀점, 어떤 느낌이 들었나요 ?
다행히 제가 생각했던 것처럼 요구사항에 맞춰 예제 테스트 결과를 통과했지만 의문점이 들었습니다.
과연 내가 작성한 코드가 객체 지향일까?
제 나름대로 클래스를 분리하며 작성했지만, 프리코스를 처음 경험해 보기도 하고 그냥 기능 구현만 한 느낌이 있었습니다.
그래서 객체를 어떻게 나눠야 할까에 대하여 고민하며 공부하다가 저는 MVC 패턴에 대하여 알게 되었습니다.
MVC패턴이란 ?
Model - View - Controller라는 3가지 구성 요소로 구분한 개발 방법론입니다.
Model 객체 : 이 객체들은 비지니스 로직, 즉 데이터 처리와 관련된 모든 작업을 수행합니다.
독립적이며, 자신의 데이터를 직접 조작하고, 데이터가 변경되면 변경 사항을 알리는 역할을 합니다.
<Model의 규칙>
1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 합니다.
2. View나 Controller에 대해서 어떤 정보도 알지 말아야 합니다.
3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야만 합니다.
View 객체 : View 객체들은 사용자에게 정보를 제공하거나, 사용자의 명령을 받아들이는 인터페이스 역할을 담당합니다. 이들은 모델 객체로부터 데이터를 받아 사용자에게 보여주며, 사용자 입력을 Controller에 전달합니다.
<View의 규칙>
1. Model이 가지고 있는 정보를 따로 저장해서는 안 됩니다.
2. Model이나 Controller를 알면 안 됩니다.
3. 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야만 합니다.
Controller 객체 : 이 객체들은 사용자의 입력을 받아 모델 객체를 조작하고, 모델 객체의 변경 사항을 모니터링하여 관련된 뷰 객체에 업데이트를 지시합니다.
<Controller의 규칙>
1. Model이나 View에 대해서 알고 있어야 합니다.
2. Model이나 View의 변경을 모니터링해야 합니다.
MVC 패턴을 공부함으로써 MVC 패턴을 적용하면, 자연 스레 객체지향 설계 원칙을 지킬 수 있다는 것을 깨달았습니다.
1. 단일 책임 원칙 : Model은 데이터 처리, View는 사용자 인터페이스, Controller는 이 두 가지 사이의 연결을 담당함으로써, 단일 책임 원칙을 잘 보여줍니다.
2. 개방 - 폐쇄 원칙 : MVC 패턴에서 각 구성 요소는 확장에서 열려있지만, 변경에서는 닫혀 있습니다. 즉, 기능을 추가하거나 확장할 때는 구성 요소를 수정하지 않고, 새로운 구성 요소를 추가함으로써 변경을 최소화합니다.
3. 의존 역전 원칙 : MVC 패턴에서 Controller는 Model과 View에 의존합니다. 이는 의존성이 추상화에 의존해야 한다는 원칙을 따르므로, Controller는 구체적인 Model이나 View에 의존하는 것이 아닌, 이들의 추상적인 개념에 의존합니다.
4. 리스코프 치환 원칙 : MVC 패턴에서 서브 클래스를 슈퍼 클래스로 대체해도 프로그램이 제대로 동작해야 합니다. 특정 View의 서브 클래스를 만들었다면, 이 서브 클래스는 원래의 View 위치에 놓여도 제대로 작동해야 합니다.
5. 인터페이스 분리 원칙 : MVC 패턴에서는 각 구성 요소가 자신의 책임과 관련된 작업만 수행하므로, 클라이언트는 필요하지 않은 인터페이스에 의존하지 않습니다.
향후 행동, 앞으로 무엇을 해야 할까요 ?
1주 차엔 기능구현만 하기 바빴던 제 자신을 보았다면, 다음 주차부터는 1주 차를 진행하며 공부했던 MVC 패턴을 적용시키며 자연스레 객체지향 설계 원칙 또한 지키면서 개발을 진행할 것 같습니다.
1주 차 요구사항에 없어서 테스트 코드 작성을 진행시키지 못했지만, 2주 차 부터는 추가될 것으로 보이기 때문에 테스트 코드에 대하여도 공부할 예정입니다
피드백, 앞서 정한 향후 행동을 실천해본 뒤, 이에 대해 어떤 피드백을 받았나요?
우아한테크코스에서 프리코스는 많은 사람들이 미션 완료에 대한 성취감과, 자신의 개발 실력을 성장력을 얻었다는 글을 읽어보면서, 아직 1주 차 밖에 진행하지 않았지만 저도 깨달은 점이 많은 것 같습니다.
따라서 지금까지 진행했던 cs 지식 공부와, 코딩 테스트 공부 보다 프리코스의 우선순위를 두는 것이 좋을 것 같습니다.
'우아한테크코스 프리코스 회고' 카테고리의 다른 글
[우아한테크코스 웹 백엔드 6기 회고] - 프리코스 4주 차 (0) | 2023.11.15 |
---|---|
[우아한테크코스 웹 백엔드 6기 회고] - 프리코스 3주 차 (0) | 2023.11.10 |
[우아한테크코스 웹 백엔드 6기 회고] - 프리코스 2주 차 (0) | 2023.11.01 |