AllInOneController의 한계점
👉 AllInOneController의 한계점
- 한 개의 클래스에 너무 많은 양의 코드가 존재
(코드 이해가 어려움: 처음부터 끝까지 다 읽어야 코드 내용을 이해할 수 있음)
- 현업에서는 코드 추가 혹은 변경 요청이 계속 생김
ex) 관심 상품 등록 시 Client 에게 응답 (Response) 하는 값 변경(등록된 Product 전체 정보 → 등록된 Product 의 id)
최저가 (Myprice) 업데이트 조건 변경(Client 가 최저가를 0원 이하로 입력 → 에러 발생)
DB 테이블 이름 변경(Product 테이블의 **lprice** → **lowprice** 변경)
👉 절차적 프로그래밍 vs 객체지향 프로그래밍
# 절차적 프로그래밍
- 초기 프로그래밍 방식
- 컴퓨터가 해야할 일들을 쭈~욱 순차적으로 나열해 놓는 코딩 방식
ex) AllInOneController 클래스의 각 API 처리내용
# 객체지향 프로그래밍
- 소프트웨어의 규모가 점점 커지면서 필요성이 부각이 됨
- 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데 취약
- 하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨
# 메모앱 (ex. Evernote, Notion 등) 예제를 통한 이해
1. 절차적 프로그래밍
(아무 메모장을 띄워서, 생각나는데로 사고의 흐름을 적는다 / 퀵메모)
- 장점: 메모를 작성하기에 편함 (직관적)
- 단점: 메모양이 많아지면 정리가 어렵고 찾기 어려움
2. 객체지향 프로그래밍
("주제별"로 정리해서 메모한다. (ex. 주식 투자, 바리스타 공부))
- 장점: 메모를 관리하기 쉬움
- 단점: 주제를 어떻게 나눠야 할지, 고민이 필요
주기적으로 주제별 (카테고리별) 정리가 필요할 수 있음
떠오르는 생각들을 적을때 주제가 다른 메모내용들을 적기 어려움
👉 AllInOneController의 역할 분리
# Controller, Service, Repository 역할
- Controller
- 클라이언트의 요청을 받음
- 요청에 대한 처리는 서비스에게 전담
- 클라이언트에게 응답
- Service
- 사용자의 요구사항을 처리 ('비즈니스 로직') / 현업에서는 서비스 코드가 계속 비대해짐
- DB 정보가 필요할 때는 Repository 에게 요청
- Repository
- DB 관리 (연결, 해제, 자원 관리)
- DB CRUD 작업 처리
- 전체적인 그림
🙋♂️ 소감 :
절차지향으로 먼저 하고 리팩토링을 통해 객체지향으로 바꾸는게 좋은 코딩 방법이라고 했는데
공부를 위해서는 리팩토링 하는게 맞는거 같은데, 지금은 그럴 시간이 없다....ㅎㅎ
😈 아는 내용이라고 그냥 넘어가지 않기! 😈
'❤️🔥TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2022-12-15(35day) (0) | 2022.12.18 |
---|---|
[TIL] 2022-12-14(34day) (0) | 2022.12.15 |
[TIL] 2022-12-13(32day) (0) | 2022.12.14 |
[TIL] 2022-12-12(31day) (0) | 2022.12.12 |
[TIL] 2022-12-09(30day) (0) | 2022.12.11 |
댓글