영권's
TIL 09-16 클론 코딩 및 과제 피드백 수정 본문
TIL
- 주문관리 어플리케이션 클론 코딩
- 과제 피드백 수정
클론 코딩 : 주문관리 어플리케이션 1일차
내용 : Product에 대한 스프링 부트 어플리케이션 작성
- 특정 url 입력시 product 목록 조회
- 관리자 페이지에서 제품 생성
과제 피드백 수정
과제는 CommandLineApplication으로 입력 받아 바우처를 create, list, exit 명령을 수행할 수 있게 하는 거였는데 기존에 작성한 코드는 CommandLineApplication 내의 분기문이 많았어서 객체지향적으로 좋은 코드는 아니었다.
객체지향 체조 라는 것을 언급하면서 분기문은 최대한 적게 사용하는 것이 사실 좋다고 했고
그래서 멘토님이 Enum등을 활용해서 최대한 없애는 것이 좋다 라고 조언해주었다.
기존 코드는 보기만 해도 어지럽고 일단 가독성도 좋지 않다.
그 뿐만 아니라 만약 명령을 더 많은 수행해야 된다면 명령을 추가할 때 마다 분기문이 더 늘어나게 될 것이다.
또한 하나의 클래스에서 사실 다양한 일을 하는 것을 뜻하기 때문에 SRP에 위반된다고 생각된다.
그래서 Enum 타입으로 Command을 생성해서 수행할 명령어를 작성해주고 기본적으로 run 메서드를 구현하게 하였다.
그러면 CREATE,EXIT,LIST 에 해당하는 타입이 만들어졌고 만약 여기서 수행할 명령이 더 추가된다 하더라도 Enum에 해당 명령어가 수행할 내용을 작성해주면 된다.
호출하는 쪽인 CommandApplication에서는 그냥 사용자의 입력 값으로 Enum타입을 찾아서 해당하는 타입의 run을 실행시켜주면 된다.
이 부분에서 예전에 공부했던 Dynamic Dispatch가 일어난다.
컴파일 타임에는 어떤 run 메서드가 실행될지 모르지만 해당 입력값을 가지고 생성된 Command 타입 중 해당하는 것을 런타입에서 실행시켜주게 된다.
'데브코스 웹 백엔드 > TIL' 카테고리의 다른 글
TIL - JPA (0) | 2021.09.28 |
---|---|
TIL 09-17 클론 코딩 2일차 (0) | 2021.09.18 |
20210817 TIL - Spring (의존성) (2) | 2021.08.18 |
2021-08-16 TIL (Build) (0) | 2021.08.16 |
2021-08-13 TIL (데이터베이스 - 트랜잭션,VIEW) (0) | 2021.08.14 |