본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2022-12-14(33day)

by elicho91 2022. 12. 14.

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

댓글