본문 바로가기
Project

취업 준비, 프로젝트 리팩토링(2)

by newny 2023. 8. 2.
반응형

리팩토링 순서

1. 테이블 재정의 → 테이블 정의서 새로 만들기 [20230727 테이블 정의서 완료]
2. erd 재정의 → 기존 erd 수정하기 [20230728 erd 수정 완료]
3. jar로 배포 → 기존 jsp 사용으로 인해 war로 설정했던 부분을 jar로 변경 [20230730 프로젝트 생성 완료]
4. 패키지 구조 변경 → 정리되어있지 않은 기존의 패키지 구조(특히 repository부분)를 변경 [20230730 구조 변경 완료]
5. 템플릿 엔진 thymeleaf로 바꾸기 → 기존의 jsp의 흔적 없애기, 불필요한 페이지나 버튼 제거 [20230731~ 진행중]
6. 재정의된 테이블 구조에 맞는 프로젝트로 코딩 [20230731~ 진행중]
7. mybatis를 jpa로 변경(아직 공부가 안된 부분이 있어서 가장 마지막에 변경예정)

 

현재 리팩토링 진행상태 (5번, 6번 함께 진행중)

회원가입, 로그인, 로그아웃 구현 완료

 

builder 패턴

[builder 패턴 참고 사이트]

https://johngrib.github.io/wiki/pattern/builder/

 

1. 오버로딩으로 생성자를 여러개 만들어 entity값을 초기화 하는방법

[단점]

매개 값이 추가되면 여러개의 생성자 코드를 다시 수정해야한다.

코드 가독성이 떨어진다.(호출 코드만으로는 의미를 알기 어려움)

 

2. 자바 빈 패턴 (setter, getter 메소드 사용)

[단점]

entity들의 값을 한번의 호출로 넣을 수 없다.(여러번 호출)

setter 메소드의 존재로 인해 변경 불가능 클래스를 만들 수 없다.

 

3. 빌더 패턴

[장점]

롬복의 @Builder 어노테이션을 이용하면 매개값 추가시 여러 코드를 수정해줄 필요 없이 변수만 새로 선언해주면 된다.

각 인자의 이름이 메소드 이름이므로 메소드 명만 보고 인자의 의미를 알 수 있다.

객체를 생성하며 메소드 체이닝으로 한번에 필요한 값의 초기화를 할 수 있다.

⭐setter 메소드가 없으므로 변경 불가능 객체를 만들 수 있다.

 

constructor 어노테이션 종류

@NoArgsConstructor

기본 생성자를 생성해주는 어노테이션 → 초기값이 필요한 final 변수가 있을경우 null, 0 등 기본값으로 초기화 된다.

 

@RequiredArgsConstructor

final 변수, Notnull 표시가 된 변수처럼 필수적인 정보를 세팅하는 생성자를 만들어주는 어노테이션

 

@AllArgsConstructor

전체 변수를 생성하는 생성자를 만들어주는 어노테이션

 

 

[타임리프 참고 사이트]

https://velog.io/@devharrypmw/Thymeleaf-%ED%83%80%EC%9E%84%EB%A6%AC%ED%94%84-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95

반응형

'Project' 카테고리의 다른 글

취업 준비, 프로젝트 리팩토링(3)  (0) 2023.08.03
취업 준비, 프로젝트 리팩토링(1)  (0) 2023.08.01
취업 준비 시작, 계획 세우기  (0) 2023.07.28

댓글