개발놀이터

for 문과 여러개의 if 문이 중첩된 코드 StreamAPI로 정리하기 본문

사이드 프로젝트/온라인 쇼핑몰 ver.5

for 문과 여러개의 if 문이 중첩된 코드 StreamAPI로 정리하기

마늘냄새폴폴 2024. 4. 28. 00:35

코드를 리팩토링 하는 과정에서 Collection에 담긴 내용을 if문 두개로 중첩해서 걸러내는 로직이 있었습니다. 

 

 

로직을 간단하게 설명하자면 사용자가 장바구니에 담은 상품의 사이즈와 데이터베이스에 존재하는 상품의 사이즈 중 같은 것을 찾고 (ex. 장바구니에 105사이즈를 담았다면 데이터베이스에 105사이즈를 검사함)

 

찾은 것 중에 재고를 비교해서 장바구니에 선택한 수량이 데이터베이스에 남아있는 수량보다 많은 경우 (ex. 장바구니에 2개를 넣고 결제하려는데 데이터베이스엔 1개밖에 없는 경우) 를 비교해서

 

만약 그런 상황이라면 재고가 남아있지 않는다는 메시지를 띄워주기위해 설계한 로직입니다. 

 

들여쓰기가 세번 이상 되었기 때문에 리팩토링 해야겠다고 생각했고 StreamAPI를 이용해서 깔끔하게 리팩토링 하였습니다. 

 

 

stream()을 이용해 for문을 없애고 두번의 filter를 이용해 두번의 중첩 if문을 짧게 줄였습니다. 

 

그리고 해당되는 것이 하나라도 있으면 (findAny) 가져오고 없으면 null을 반환하여 처리하였습니다.