Programming/TIL
12.7 수 | 비매너 정지 코드 리팩토링
tikitaka205
2022. 12. 8. 00:56
첫 if에서 false하고 제일 아래에 else를 통해 리턴을 했었는데 코드리뷰를하며 리턴값이 멀어서 보이지않는 좋지않은 코드라는 이야기를 듣고 리팩토링을 해봤다 아직까지 깔끔한 코드가 무엇인지 어떤코드가 정형화된, 일관성있는건지 잘 모르겠다. 하지만 오늘 멘토님이게 들은바로는 내코드를 보는사람이 잘이해하는 코드가 좋은코드라고 했다. 지금까지 그런생각없이 코딩을 했다면 팀원들의 도움을 받은 오늘을 계기로 완성도있는 좋은코드를 작성하는 개발자가 될것이다.
if review_exist==True:
"""
리뷰 1회 제한
"""
return Response("이미 평가를 했어요", status=status.HTTP_400_BAD_REQUEST)
else:
if serializer.is_valid() and request.user.id==goods_obj.seller_id:
"""
author 셀러일때 review의 receiver 저장
"""
buyer=get_object_or_404(User, id=goods_obj.buyer_id)
buyer.rating_score = buyer.rating_score + int(score)
buyer.save()
serializer.save(author = request.user, receiver=buyer, goods = goods_obj) # 포린키에 저장하는건 id str이 아니라 객체임 그래서 객체가져와서 저장해야한다.
if score != -20:
return Response(serializer.data, status=status.HTTP_200_OK)
else:
try:
receiver_review_score = Review.objects.filter(receiver_id=goods_obj.buyer_id).order_by('-created_at').values()[1]
if receiver_review_score['score'] == -20:
buyer.is_active = 0
buyer.save()
return Response("연속적인 비매너로 정지", status=status.HTTP_200_OK)
except:
return Response("연속적인 비매너는 아니네요", status=status.HTTP_200_OK)
elif serializer.is_valid() and request.user.id==goods_obj.buyer_id:
"""
author 바이어일때 receiver 저장
"""
seller=get_object_or_404(User, id=goods_obj.seller_id)
seller.rating_score = seller.rating_score + int(score)
seller.save()
serializer.save(author = request.user, receiver=seller, goods = goods_obj) # 포린키에 저장하는건 id str이 아니라 객체임 그래서 객체가져와서 저장해야한다.
if score != -20:
return Response(serializer.data, status=status.HTTP_200_OK)
else:
try:
receiver_review_score = Review.objects.filter(receiver_id=goods_obj.seller_id).order_by('-created_at').values()[1]
if receiver_review_score['score'] == -20:
seller.is_active = 0
seller.save()
return Response("연속적인 비매너로 정지", status=status.HTTP_200_OK)
except:
return Response("연속적인 비매너는 아니네요", status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
아래는 리팩토링 전 코드이다.
if review_exist==False:
"""
리뷰 1회 제한
"""
if serializer.is_valid() and request.user.id==goods_obj.seller_id:
"""
author 셀러일때 review의 receiver 저장
"""
buyer=get_object_or_404(User, id=goods_obj.buyer_id)
buyer.rating_score = buyer.rating_score + int(score)
buyer.save()
serializer.save(author = request.user, receiver=buyer, goods = goods_obj) # 포린키에 저장하는건 id str이 아니라 객체임 그래서 객체가져와서 저장해야한다.
if score == -20:
try:
receiver_review_score = Review.objects.filter(receiver_id=goods_obj.buyer_id).order_by('-created_at').values()[1]
if receiver_review_score['score'] == -20:
buyer.is_active = 0
buyer.save()
return Response("연속적인 비매너로 정지", status=status.HTTP_200_OK)
except:
return Response("연속적인 비매너는 아니네요", status=status.HTTP_200_OK)
else:
return Response(serializer.data, status=status.HTTP_200_OK)
elif serializer.is_valid() and request.user.id==goods_obj.buyer_id:
"""
author 바이어일때 receiver 저장
"""
seller=get_object_or_404(User, id=goods_obj.seller_id)
seller.rating_score = seller.rating_score + int(score)
seller.save()
serializer.save(author = request.user, receiver=seller, goods = goods_obj) # 포린키에 저장하는건 id str이 아니라 객체임 그래서 객체가져와서 저장해야한다.
if score == -20:
try:
receiver_review_score = Review.objects.filter(receiver_id=goods_obj.seller_id).order_by('-created_at').values()[1]
if receiver_review_score['score'] == -20:
seller.is_active = 0
seller.save()
return Response("연속적인 비매너로 정지", status=status.HTTP_200_OK)
except:
return Response("연속적인 비매너는 아니네요", status=status.HTTP_200_OK)
else:
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else:
return Response("이미 평가를 했어요", status=status.HTTP_400_BAD_REQUEST)