[Project] 자바 프로젝트 리팩토링 : Library Service(3) [Singleton 오류 해결 및 User 기능 리팩토링]
[Project] 자바 프로젝트 리팩토링 : Library Service(2) [Singleton 패턴 적용 및 Dao 분리] [Project] 자바 프로젝트 리팩토링 : Library Service(1) [인터페이스 구분, 데이터 영속화, Lombok 적용] - 자바 프로젝트 리
yermi.tistory.com
- 자바 프로젝트 리팩토링 : Library Service(4)
회원 다음으로 작업 시작한 것은 도서 기능. 도서는 도서정보(Book)와 소장도서정보(LibBook)로 나눠져 있다.
가장 먼저 작업한 것은 도서를 조회해 오는 findBy 관련 메서드들이였다.
굳이 나누지 않아도 될 메서드들은 제거하였고, 같은 기능을 하는 메서드는 오버로딩(overloding)하였다.
[JAVA] 오버로딩(overloading)이란? [메서드 오버로딩, 같은 이름의 메서드들]
1. 오버로딩(overloading)이란? 메서드도 변수처럼 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다. 그러나, 자바에서는 한 클래스 내에 이미 사용하려는 이름
yermi.tistory.com
도서에서 사용하던 findBy 메서드는 총 6개였다.
findLibBookIndexBy : 소장도서의 인덱스를 찾는 메서드← 객체로 조회하여 데이터 삭제- findBookByID : 도서ID로 도서정보 조회 ← getBook 메서드
- findBookByIsbn : ISBN으로 도서정보 조회 ← getBook 메서드 (오버로딩)
- findLibBookListByBookID : 도서ID로 소장도서 목록 조회 ← listLibBook 메서드 (오버로딩)
- findLibBookByID : 소장도서ID로 소장도서정보 조회 ← getLibbook 메서드
findBookByLibBookID : 소장도서ID로 도서정보 조회← 삭제
- 기존 코드
/** @findBy_메서드 */
/**
* 소장도서 번호가 일치하는 소장도서의 인덱스를 찾는 메서드.
* @param libBookID : 소장도서 번호(LibBook 클래스의 id)
* @return ret : 소장도서 번호가 일치하는 소장도서의 인덱스 번호
*/
private int findLibBookIndexBy(int libBookID) {
int ret = -1;
for (int i = 0; i < lBooks.size(); i++) {
if (lBooks.get(i).getId() == libBookID) {
ret = i;
break;
}
}
return ret;
}
/**
* ISBN이 일치하는 도서정보를 찾는 메서드. 일치하는 값이 없을 경우, null을 반환한다.
* @param isbn : Book 클래스의 isbn과 비교할 isbn
* @return book : ISBN이 일치하는 도서정보를 Book 타입으로 반환
*/
private Book findBookByIsbn(String isbn) {
Book book = null;
for (Book b : books) {
if (b.getIsbn().equals(isbn)) {
book = b;
}
}
return book;
}
/**
* 도서번호가 일치하는 도서정보를 찾는 메서드. 일치하는 값이 없을 경우, null을 반환한다.
* @param bookID : 도서번호(Book 클래스의 id)
* @return book : 도서번호가 일치하는 도서정보를 Book 타입으로 반환
*/
private Book findBookByID(int bookID) {
Book book = null;
for (Book b : books) {
if (b.getId() == bookID) {
book = b;
}
}
return book;
}
/**
* 도서번호가 일치하는 소장도서를 목록화하는 메서드.
* @param bookID : 도서번호(Book 클래스의 id)
* @return libBooks : 도서번호가 일치하는 소장도서를 LibBook타입의 List형식으로 반환
*/
private List<LibBook> findLibBookListByBookID(int bookID) {
List<LibBook> libBooks = new ArrayList<LibBook>();
for (LibBook lB : lBooks) {
if (lB.getBookID() == bookID) {
libBooks.add(lB);
}
}
return libBooks;
}
/**
* 소장도서 번호가 일치하는 소장도서 정보를 찾는 메서드. 일치하는 값이 없을 경우, null을 반환한다.
* @param libBookID : 소장도서 번호(LibBook 클래스의 id)
* @return libBook : 소장도서 번호가 일치하는 소장도서 정보를 LibBook 타입으로 반환
*/
private LibBook findLibBookByID(int libBookID) {
LibBook libBook = null;
for (LibBook lB : lBooks) {
if (lB.getId() == libBookID) {
libBook = lB;
break;
}
}
return libBook;
}
/**
* 소장도서 번호가 일치하는 도서정보를 찾는 메서드. 일치하는 값이 없을 경우, null을 반환한다.
* @param libBookID : 소장도서 번호(LibBook 클래스의 id)
* @return book : 소장도서 번호가 일치하는 도서정보를 Book 타입으로 반환
*/
private Book findBookByLibBookID(int libBookID) { // LibBookID로 Book 탐색
Book book = null;
for (Book b : books) {
if (b.getId() == findLibBookByID(libBookID).getBookID()) {
book = b;
}
}
return book;
}
- 리팩토링 코드
// 도서정보 목록조회
public List<Book> listBook() {
return books;
}
// 도서정보 조회
public Book getBook(int id) {
for (Book b : books) {
if (b.getId() == id) {
return b;
}
}
return null;
}
// 도서정보 조회(ISBN)
public Book getBook(String isbn) {
for (Book b : books) {
if (b.getIsbn().equals(isbn)) {
return b;
}
}
return null;
}
// 소장도서 목록조회
public List<LibBook> listLibBook() {
return libBooks;
}
// 소장도서 목록조회(도서정보 ID)
public List<LibBook> listLibBook(int id) {
List<LibBook> lBooks = new ArrayList<LibBook>();
for (LibBook lB : libBooks) {
if (lB.getBookID() == id) {
lBooks.add(lB);
}
}
return lBooks;
}
// 소장도서 조회
public LibBook getLibBook(int id) {
for (LibBook lB : libBooks) {
if (lB.getId() == id) {
return lB;
}
}
return null;
}
- 기존의 코드
GitHub - kycasdzxc/human_project: 휴먼교육센터에서 진행한 프로젝트 🏫
휴먼교육센터에서 진행한 프로젝트 🏫. Contribute to kycasdzxc/human_project development by creating an account on GitHub.
github.com
- 리팩토링 코드
GitHub - kycasdzxc/LibraryService: Java Project 리팩토링 : Library Service 📚
Java Project 리팩토링 : Library Service 📚. Contribute to kycasdzxc/LibraryService development by creating an account on GitHub.
github.com
- Next) 자바 프로젝트 리팩토링 : Library Service(5)
[Project] 자바 프로젝트 리팩토링 : Library Service(5) [Book 기능 리팩토링]
[Project] 자바 프로젝트 리팩토링 : Library Service(4) [오버로딩을 활용한 도서정보 조회 기능 수정] [Project] 자바 프로젝트 리팩토링 : Library Service(3) [Singleton 오류 해결 및 User 기능 리팩토링] [Project]
yermi.tistory.com