본문 바로가기

웹 프레임워크/Spring

프로젝트C. 메인, 상세보기 관련 web API 만들기 코드 리뷰 및 회고 (boostcourse 웹 백엔드)

728x90

www.boostcourse.org/web326 

 

웹 백엔드

부스트코스 무료 강의

www.boostcourse.org

 

이번 프로젝트는 범위도 상당하였고, 난이도도 꽤 있어서 여러번 시도할 줄 알았는데, 리뷰어님께서 긍정적으로 평가해주셔서 PASS를 했네요.

 

 

처음 환경 셋팅부터시작하여, WEB API 및 테스트코드, swagger 환경까지 구축하는 프로젝트였습니다. 자세한 내용은 수강신청하여 보실 수 있습니다.

 

 

리뷰 #1

 

 

Advice

RequestParam의 name과 전달받을 파라미터의 이름이 동일하다면 생략가능하다.

defaultValue가 정의되어 있다면 required도 생략가능하다.

//변경 전
@RequestParam(name = "start", defaultValue = "0", required = false) int start)

//변경 후
@RequestParam(defaultValue = "0") int start)

 

 

다른 Controller에서도 사용할 수 있게 Service 레이어의 메소드에서 분기하자.

//변경 전 Controller
if (productId == 0) {
      //서비스 호출
      reservationUserComments = commentService.getComments(start, limit);
    } else {
      //서비스 호출
      reservationUserComments = commentService.getCommentsByProductId(productId, start, limit);
    }
    
//변경 후 Controller
reservationUserComments = commentService.getComments(productId, start, limit);

다른 Controller에서도 Service 레이어에 접근할 수 있도록 변경하였다.

 

 

SQL문 IFNULL 함수를 사용하여 기본값을 반환하도록 할 수 있다.

SELECT IFNULL(AVG(ruc.score), 0)

기존에는 값이 없을 경우 null을 가지고 있었는데, SQL문에서 0으로 초기화 하여 값을 셋팅하는 방법도 있다.

 

https://www.w3schools.com/sql/func_mysql_ifnull.asp

 

 

 

카멜 표기법을 지키자

//변경 전
public Integer getAvgBydisplayId(Long displayId) 
public int selectCountBycategoryId(Long productId)

//변경 후
public Integer getAvgByDisplayId(Long displayId) 
public int selectCountByCategoryId(Long productId)

검토한다고 했는데 미쳐 바꾸지 못했던 부분이 있었습니다. 리뷰어님께서 꼼꼼하게 잡아주셨습니다.

 

 

인터페이스 멤버의 접근 제어자는 반드시 public이므로 생략할 수 있다.

//변경 전
public interface CategoryService {
  public List<Category> getCategories();
}

//변경 후
public interface CategoryService {
  List<Category> getCategories();
}

 

링크: opentutorials.org/module/2495/14142

 

 

 

728x90