-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#334 냉장고 관련 API 클린코드 및 동적쿼리 적용 #347
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니답 !! 냉장고 부분 복잡했을텐데 동적쿼리로 복잡한 로직들 합쳐지고 사소한 변수명 변경도 이전보다 훨씬 알기 쉬워진 것 같아요 😸
로직 이해하느라 찾아보다가 해당 함수를 확인했는데, 이 부분 파라미터가 이제 expirationDate 의미인 것 같은데 맞다면 파라미터명도 변경하는 것 어떤가요 ?!
IceButler_Server/src/main/java/com/example/icebutler_server/global/util/FridgeUtils.java
Lines 6 to 9 in 223e014
public abstract class FridgeUtils { | |
public static int calShelfLife(LocalDate shelfLife) { | |
return (int) (-1 * ChronoUnit.DAYS.between(LocalDate.now(), shelfLife)); | |
} |
@Schema(description = "식품 소비기한", example = "2024-01-01") | ||
private LocalDate expirationDate; | ||
@Schema(description = "남은 소비기간", example = "3") | ||
private int shelfLife; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
변수명 바꾼 거 직관적이라 넘 좋으네요 마음이 편안 😌
src/main/java/com/example/icebutler_server/fridge/dto/response/FridgeUserRes.java
Outdated
Show resolved
Hide resolved
@Override | ||
public Page<FridgeFoodsRes> searchFridgeFoods(Long fridgeId, String word, String category, Pageable p) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
합친 거 너무 깔끔한 것 같아요 최고.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
포괄적으로 하나만 검사해서 오류를 뱉어도 되는지, 아니면 하나씩 단계별로 검사해서 오류를 뱉는 게 더 적절한 지?
저는 개인적으로 할 수 있는 한 서버에서 많은 예외처리를 진행하는 게 (실제 운영을 한다면) 안정적인 운영을 할 수 있어서 중요하다고 생각하는 편입니다..! 만약, 해당 로직에서 오류가 발생하면 user가 문제인지/fridge가 문제인지/fridgeUser가 문제인지 추가적인 테스트없이 바로 로그 확인해서 의심되는 관련 로직을 확인하고 수정할 수 있으니까요!
그래서 전자를 더 선호하는 편입니다. (User는 로그인 리졸버를 통해 체크하니까 객체가 필요없으니 제외하고, 제안하신 것처럼 userId로만 검사해도 좋을 것 같네요!)
혹시 후자를 선호하는 이유도 말씀해주실 수 있나요 ?! 어떤 방법이 좋을지 같이 생각해보아요 -
스프링 인터셉터 사용해서 체크하는 레퍼런스 너무 잘 봤습니다 !! 덕분에 읽어보면서 공부해보려고 합니다 흐 저희 로직 중에서도 ROLE을 통해 체크하는 API가 있으면 활용하면 좋을 것 같네요! 리팩토링하면서 찾아보겠습니답 혹시 좋은 아이디어 있으면 공유하겠습니다 - !
사용자 입장에서는 냉장고가 없어도, 냉장고 멤버가 아니여도 결국 접근을 못하는 건 똑같은데, 쿼리를 이것저것 다 날리는게 적절한 방법은 아니라고 생각했습니다! 물론 개발자 입장에서는 모든 예외사항을 다 뱉는 것이 편하긴 하겠지요? 추가로 저런식으로 확인만 하고 해당 객체가 필요없을 때는 findBy보다는 exist로 존재 유무만 확인하는 건 어떤가요?? 속도면에서 조금은 더 이득이 있을 것 같습니다! |
옹 exists로 확인하는 거 좋습니다 !! 중복 인정이오 .. 그러면 exists로 확인 + 중복되는 코드 별도 private 메서드로 분리해서 중복 줄이기는 어떤가욥 ! |
네! 일단 머지하고 나중에 이슈 새로 만들어서 해보겠습니당 |
📍 이슈 번호
🛠️ 작업 내용
🎸 기타 사항
IceButler_Server/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java
Lines 197 to 204 in 223e014
IceButler_Server/src/main/java/com/example/icebutler_server/fridge/service/FridgeServiceImpl.java
Lines 168 to 171 in 04fa955
@Auth
어노테이션에서 경우별로 처리하는 방법도 있는 것 같아요!FRIDGE_USER_NOT_FOUND
가 아니라NO_PERMISSION
이려나요?