AllInOneController 의 문제점

송영재·2022년 10월 10일

Spring

목록 보기
40/45
  • 32) AllInOneController 코드 설명

    👉 Service, Repository 없이 Controller 한 개로도 잘 동작하네?
    일단 이렇게 잘 동작하는 AllInOneController 내용을 살펴봅시다.

    [웹 서비스 구성도]

    • 관심상품 등록 API
    • 관심상품 최저 희망가 업데이트 API
    • 관심상품 조회
  • 33) AllInOneController 클래스의 문제점

    1. 한 개의 클래스에 너무 많은 양의 코드가 존재

      1. 코드 이해가 어려움: 처음부터 끝까지 다 읽어야 코드 내용을 이해할 수 있음
    2. 현업에서는 코드 추가 혹은 변경 요청이 계속 생김

      [변경 요청의 예]

      1. 신규 상품 등록 시 Client 에게 응답 (Response) 하는 값 변경
        1. 등록된 Product 전체 정보 → 등록된 Product 의 id
      2. 최저가 (Myprice) 업데이트 조건 변경
        1. Client 가 최저가를 0원 이하로 입력 → 에러 발생
      3. DB 테이블 이름 변경
        1. Product 테이블의 lpricelowprice 변경
  • 34) 절차적 프로그래밍 vs. 객체지향 프로그래밍

    👉 "절차적 프로그래밍(Procedural Programming)"
    vs.
    "객체지향 프로그래밍(Object-Oriented Programming)"

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

      2. "객체지향 프로그래밍"으로 리팩토링

        💡 '**리팩토링**' 이 뭐죠?? : 기능 상의 변경 없이 프로그래밍 구조를 개선하는 것

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

0개의 댓글