복잡한 식을 쓰는 대신 도우미 함수를 작성하라

Minsang Yu·2023년 6월 6일
0

파이썬은 문법이 간결하므로 상당한 로직이 들어가는 식도 한 줄로 매우 쉽게 작성할 수있다.

하지만 긴 로직을 한 줄로 작성할 경우 가독성에 문제가 생긴다. 너무 읽기 어렵고 시각적 잡음이 생긴다. 즉 코드를 이해하기 쉽지 않으므로, 코드를 새로 읽는 사람이 이 코드가 실제로 어떤 일을 하는지 파악하는데 많은 시간이 필요하다.

# my_value 에 빨강이라는 key가 존재할경우 value를 반환, 없을경우 0을 반환
red = int(my_value.get('빨강',[''])[0] or 0)

파이썬에서 코드를 간결하게 유지하면서 이련 경우를 명확하게 표현할 수 있는 if/else 조건식(또는 삼항 조건식)이 있다.

red_str = my_value,get('빨강', [''])
red = int(red_str[0]) if red_str[0] else 0

이 코드는 덜 복합한 경우라면 if/else 조건식이 코드를 아주 명확하게 해줄 것 이다. 하지만 앞의 에제는 다음과 같이 여러 줄로 나눠쓴 완전한 if/ else 문 보다는 아직 덜 명확하다.

green_str = my_value.get('초록', [''])
if green_str[0]:
	green = int(green_str[0])
else:
	green = 0

이 로직을 반복 적용하려면 ( 단지 두 세번에 불과할 지라도) 도우미 함수를 작성해야한다.

def get_first_int(Value, key, default = 0):
	found = value.get(key, [''])
	if found[0]:
		return int(found[0])
	return default

green = get_first_int(my_values, '초록')

도우미 함수 호출을 사용해 작성한 코드는 앞에서 본 복작한 버전이나 두줄 짜리 if/else보다 훨씬 명확하다.

식이 복잡해지기 시작하면 바로 식을 더 작은 조각으로 나눠서 로직을 도우미 함수로 옮길지 고려해야 한다.

파이썬에서 함축적인 문법이 이런 지저분한 코드를 만들어내지 않도록 하라 반복하지 마라 (Don’t Repeat Yourself’)는 뜻의 DRY원칙을 따르라.


정리

  • 파이썬 문법을 사용하면 아주 복잡하고 읽이 어려운 한 줄짜리 식을 쉽게 작성할 수 있다.
  • 복잡한 식을 도우미 함수로 옮겨라, 특히 같은 로직을 반복해 사용할 때는 도우미 함수를 꼭 사용하라.
  • 불(Boolean)연산자 or나 and를 식에 사용하는 것 보다 if/else 식을 쓰는 편이 더 가독성이 좋다.

Reference. Effective Python

profile
Jr. DataEngineer

0개의 댓글