TWIL 11 주차 Decorator

Matthew Woo·2022년 5월 22일
0

TWIL

목록 보기
11/16

이번 주 회사에서 배운 것은 클린아키텍처에 기반한 코드를 짜면서 리뷰를 받은 것 들이 도움이 되었던 것 같다.
그동안 받았던 리뷰 중에서 기억에 남는 것을 좀 써보자면, 에러 발생시 HttpResponse를 상위 레이어에서 처리했었다. 이후 읽은 클린아키텍처에서 나오는 내용이지만 HttpResponse도 하나의 IO 로서 상위개념에서는 이를 모르게해야하고 에러를 명시적으로 발생시켜야한다는 것 이다.

요새 틈틈히 파이썬 공부하고 있는데 회사에서 작성중인 api 중 에러처리에 있어서 적용시킨 부분이 있어서 좋았던 것 같다.

# 내가 작성했지만 회사코드라 이름 및 좀 변경하였다.
class InvalidParentError(Exception):
    def __init__(self, error_code=int):
        self.code = error_code


class Invalid12345Error(InvalidRequestError):
    def __init__(self, error_code=INVALID_12345_CODE):
        super().__init__(error_code)


class InvalidacdeError(InvalidRequestError):
    def __init__(self, error_code=INVALID_abcde_CODE):
        super().__init__(error_code)

에러발생시키는 부분에서 Invalid12345Error, InvalidabcdeError 와 같은 명시적 에러를 발생시켰다.

except InvalidParentError as error:
            return Response(data={'code': f'{error.code}'}, status=status.HTTP_400_BAD_REQUEST)

해당 에러를 받는 것은 상위 인스턴스(InvalidRequestError)로 받아서 처리하도록 해주었다. 여기서 나오는 에러 코드는 서비스 인터페이스에서 클라이언트측과 정한 것이라 설명할 순 없다.

이번 주는 클린아키텍처 책을 더 읽었다. 주말에는 파이썬 Decorator를 공부했다. 팩토리얼, 피보나치와 같은 기본예제처럼 간단한거에 decorator, decorator factory 예제 함수 따라 구현해보고 공부했다. 블로그에 관련 내용 따로 정리하려했는데 클래스 메소드에 데코레이터 적용 등 좀 남은 부분이 있어서 다음주까지 계속 공부할 듯 하다. vscode 에 주피터노트북 사용이 생각보다 편하게 잘 되어 있다. 개발 프로젝트가 아닌 언어나 간단한 공부용으로는 유용하게 쓸 듯. 파일도 남겨놓으면 복습하기 좋다.

다음 주도 파이팅!

+ 한마디
로그도 난발(?) 하기 보다 필요한 위치에 잘 작성하도록 해야한다. 로그가 없어도 문제지만 로그를 제대로 남기지 않으면 오히려 디버깅이 어려워지거나 로그도 비용이다. 로그도 저장되어야하고, Read 요청이 날아가기에.

profile
Code Everyday

0개의 댓글