JAVA

[JAVA/SpringBoot] AllInOneController 의 문제점 (1-11)

wonderson 2022. 5. 27. 22:54
반응형

[여기에 적은 거는 강의 내용을 다 적은게 아니라서 강의자료 보면서 이 게시글 참고하자.]

[스프링 심화 강의 1주차 11강 AllInOneController 의 문제점]

 

- springCore 프로젝트에서 실습

 

[웹 서비스 구성도]

- 전체적으로 순서를 보자

- 사용자가 웹 브라우저(클라이언트)를 사용한다. 웹 브라우저를 사용해서 API요청이 오면 서버는 그 요청을 받아서 DB에 어떤 SQL을 가지고 SQL언어(DB언어)를 사용해서 DB에 접근한다.

- 지금 가장 어려움을 주는 거는

==> 클라이언트, 서버, DB 모두가 다른 언어를 사용하기 때문에 그 중간 과정에서 커뮤니케이션 하기 위한 언어가 필요하다. 그래서 API, SQL 이런것들이 필요하다.


  • ProductRequestDto 안에 관심 상품명(title), 관심상품 image URL(image),
    관심상품 구매링크 URL(link), 관심상품의 최저가(lprice) 이런 정보들이 클라이언트로부터 넘어오는 거를 클라이언트의 Request body부분에 들어온다.
    그래서 그 내용을 Dto에 채워준다.( 그 역할은 Spring이 해준다.)

 

  • 기본클래스.java (예시. Product.java)
    -> Product.java 클래스에 id, image, link ...여기 정보들이 DB에 들어가 정보들을 모아 놓은 클래스이다.

관심상품 등록 API

 

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

 

관심상품 조회


  • 절차적 프로그래밍 vs. 객체지향 프로그래밍
  • 👉 "절차적 프로그래밍(Procedural Programming)" vs. "객체지향 프로그래밍(Object-Oriented Programming)" 
    • "절차적 프로그래밍"
      • 초기 프로그래밍 방식
      • 컴퓨터가 해야할 일들을 쭈~욱 순차적으로 나열해 놓는 코딩 방식
      • 예) AllInOneController 클래스의 각 API 처리내용
    • "객체지향 프로그래밍"
      • 소프트웨어의 규모가 점점 커지면서 필요성이 부각이 됨
      • 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데 취약
      • 하나의 사물 (객체) 에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨
        • 예)
          • 뭔가 자를 것이 필요하면 '✂️' 를 떠올림 (class Sciccors)
          • 종이에 적을 게 필요하면 '✏️' 을 떠올림 (class Pen)
          • "하나의 역할" → 객체
  • 메모앱 (ex. Evernote, Notion 등) 예제를 통한 이해
    • 절차적 프로그래밍
      1. 장점:
        • 메모를 작성하기에 편함 (직관적)
      2. 단점:
        • 메모양이 많아지면 정리가 어려움
        • 내가 원하는 메모 내용을 찾기 어려움
    • : 아무 메모장을 띄워서, 생각나는데로 사고의 흐름을 적는다 (퀵메모)
    • 객체지향 프로그래밍
      1. 장점: 메모를 관리하기 쉬움
      2. 단점:
        • 주제를 어떻게 나눠야 할지, 고민이 필요
          • 잘못 주제를 나누면..
            • 중복된 메모 내용이 생길 수 있음 (ex. "나중에 읽을 책", "도움이 되는 책")
            • 하나의 주제에 너무 적거나, 너무 많은 메모 내용이 들어갈 수 있음 (ex. "88 올림픽 한국 순위와 금메달 개수", "공부")
        • 주기적으로 주제별 (카테고리별) 정리가 필요할 수 있음
        • 떠오르는 생각들을 적을때 주제가 다른 메모내용들을 적기 어려움
    • : "주제별"로 정리해서 메모한다. (ex. 주식 투자, 바리스타 공부)
  • 추천 프로그래밍 방식
    1. 처음엔 "절차적 프로그래밍"
    2. "객체지향 프로그래밍"으로 리팩토링
'리팩토링' 이 뭐죠??
: 기능 상의 변경 없이 프로그래밍 구조를 개선하는 것

1) 하나의 파일에 너무 많은 코드가 들어가지 않게!
2) 역할별로 코드 분리!!
3) 코드를 좀 더 읽기 편하게!!!
반응형