-
32) AllInOneController 코드 설명
👉 Service, Repository 없이 Controller 한 개로도 잘 동작하네?
일단 이렇게 잘 동작하는 AllInOneController 내용을 살펴봅시다.
[웹 서비스 구성도]

- 관심상품 등록 API

- 관심상품 최저 희망가 업데이트 API

- 관심상품 조회

-
33) AllInOneController 클래스의 문제점
-
한 개의 클래스에 너무 많은 양의 코드가 존재
- 코드 이해가 어려움: 처음부터 끝까지 다 읽어야 코드 내용을 이해할 수 있음
-
현업에서는 코드 추가 혹은 변경 요청이 계속 생김
[변경 요청의 예]
- 신규 상품 등록 시 Client 에게 응답 (Response) 하는 값 변경
- 등록된 Product 전체 정보 → 등록된 Product 의 id
- 최저가 (Myprice) 업데이트 조건 변경
- Client 가 최저가를 0원 이하로 입력 → 에러 발생
- DB 테이블 이름 변경
- Product 테이블의 lprice → lowprice 변경
-
34) 절차적 프로그래밍 vs. 객체지향 프로그래밍
👉 "절차적 프로그래밍(Procedural Programming)"
vs.
"객체지향 프로그래밍(Object-Oriented Programming)"
- "절차적 프로그래밍"
- 초기 프로그래밍 방식
- 컴퓨터가 해야할 일들을 쭈~욱 순차적으로 나열해 놓는 코딩 방식
- 예) AllInOneController 클래스의 각 API 처리내용
- "객체지향 프로그래밍"
- 소프트웨어의 규모가 점점 커지면서 필요성이 부각이 됨
- 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데 취약
- 하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨
- 예)
- 뭔가 자를 것이 필요하면 '✂️' 를 떠올림 (class Sciccors)
- 종이에 적을 게 필요하면 '✏️' 을 떠올림 (class Pen)
- "하나의 역할" → 객체
- 메모앱 (ex. Evernote, Notion 등) 예제를 통한 이해
- 절차적 프로그래밍 : 아무 메모장을 띄워서, 생각나는데로 사고의 흐름을 적는다 (퀵메모)
- 장점:
- 단점:
- 메모양이 많아지면 정리가 어려움
- 내가 원하는 메모 내용을 찾기 어려움
- 객체지향 프로그래밍 : "주제별"로 정리해서 메모한다. (ex. 주식 투자, 바리스타 공부)
- 장점: 메모를 관리하기 쉬움
- 단점:
- 주제를 어떻게 나눠야 할지, 고민이 필요
- 잘못 주제를 나누면..
- 중복된 메모 내용이 생길 수 있음 (ex. "나중에 읽을 책", "도움이 되는 책")
- 하나의 주제에 너무 적거나, 너무 많은 메모 내용이 들어갈 수 있음 (ex. "88 올림픽 한국 순위와 금메달 개수", "공부")
- 주기적으로 주제별 (카테고리별) 정리가 필요할 수 있음
- 떠오르는 생각들을 적을때 주제가 다른 메모내용들을 적기 어려움
- 추천 프로그래밍 방식
-
처음엔 "절차적 프로그래밍"
-
"객체지향 프로그래밍"으로 리팩토링
💡 '**리팩토링**' 이 뭐죠??
: 기능 상의 변경 없이 프로그래밍 구조를 개선하는 것
1) 하나의 파일에 너무 많은 코드가 들어가지 않게!
2) 역할별로 코드 분리!!
3) 코드를 좀 더 읽기 편하게!!!