Circular import에 대한 생각

인터넷을 보면 많은 circular import 문제 해결 방법을 찾을 수 있다. 대표적인 해결방법. def foo(): import smth ... 위와 같이 함수 내부에서 import 를 한다면 회피가 가능하다. 프로그램은 문제 없이 동작하기 시작하고, 이후 이 문제는 그대로 잊혀진다. 이게 옳은 방법일까? 일단 해당 문제가 왜 발생하는 지부터 생각해보자. # foo.py import bar ... # bar.py import foo ... 이렇게 서로를 import 하는 경우 발생한다. 개발을 하다보면 흔하게 발생하는 경우인데, 단순히 위에 소개한 방법으로 회피하는 것만 고려하여 아쉬움이 있다. ...

February 21, 2021 · 2 min · Dongwook Kim

Early return에 대한 생각

early return 이란 특정 상황에서 function 내 주요 로직이 실행되기 이전에 return을 함으로써 실행 cost를 줄이고 가독성을 높이는 방법이다. def notify(data): if not data.get("to"): return False if data.get("platform") not in NOTIFY_PLATFORMS: return False return NOTIFY_PLATFORMS[data["platform"]](data) 위의 경우에서 보듯이 알림을 주는 function에서 전처리를 통해 실제 로직이 실행 되기 이전에 return을 주는 것을 알 수 있다. 안좋은 예로 보면 def notify(data): if not data.get("to"): return False elif data.get("platform") not in NOTIFY_PLATFORMS: return False else: return NOTIFY_PLATFORMS[data["platform"]](data) 와 같이 if-elif-else 로 모든 로직을 감싸는 경우라고 생각 되는데, 이 경우는 해당 function의 정상 로직이 어느 분기인지 알기 힘들다. ...

February 17, 2021 · 2 min · Dongwook Kim