10

모든 함수에 로깅을 넣으라고요?

반복되는 로깅 코드가 지겨워 - 데코레이터

학습 목표

코드 중복의 문제점을 체감한다 데코레이터의 필요성을 이해한다

모든 함수에 로깅을 넣으라고요?

"김신입, 이번 스프린트에서 모든 API 함수에 로깅 추가해줘."

신입의 첫 번째 시도:

에디터 로딩 중...

문제점

문제심각도
코드 중복같은 로깅 코드가 50군데
유지보수로깅 형식 바꾸려면 50군데 수정
실수 가능성복붙하다 빠뜨리기 쉬움
핵심 로직 가독성로깅 코드에 비즈니스 로직이 묻힘

박선배의 조언

"신입아, 그렇게 하는 게 아니야. 데코레이터 써."

에디터 로딩 중...

데코레이터의 마법

  • 함수 위에 @붙이기만 하면 로깅 자동 추가!
  • 비즈니스 로직은 깔끔하게 유지
  • 로깅 로직은 한 곳에서 관리

오늘의 학습 목표

  1. First-class function - 함수를 변수처럼 다루기
  2. Closure - 내부 함수가 외부 변수를 기억
  3. 기본 데코레이터 - @timing, @log 구현
  4. 인자 있는 데코레이터 - @retry(max_attempts=3)
  5. 클래스 데코레이터 - 상태를 유지하는 데코레이터
핵심 포인트
  • 데코레이터 = 함수를 수정하지 않고 기능 추가
  • 코드 중복 제거, 관심사 분리
  • @decorator 문법으로 깔끔하게 적용