처음에는 함수를 만드는 것 자체가 어색하다. 그런데 어느 순간부터는 코드가 길어져서, 어디서부터 잘라야 할지 더 어렵게 느껴진다.
함수 분리는 멋있어 보이기 위한 작업이 아니라, 내가 다시 읽을 때 덜 헷갈리게 만들기 위한 작업이다.
같은 이름을 붙일 수 있으면 나눌 수 있다
여러 줄의 코드 묶음을 보고 이 부분은 입력 검증, 이 부분은 계산, 이 부분은 출력처럼 이름을 붙일 수 있다면 함수로 나눌 후보가 된다.
반대로 아직 이름이 잘 안 붙는다면, 성급히 나누기보다 로직을 조금 더 이해한 다음에 쪼개도 된다.
FUNCTION
def is_valid(score):
return 0 <= score <= 100
def grade(score):
if score >= 80:
return "pass"
return "retry"
검증과 판단을 나누면 각각의 역할이 더 또렷해진다.
함수를 나눠 볼 신호
- 같은 코드가 두 번 이상 나온다.
- 주석으로 설명하고 싶은 블록이 있다.
- 입력 검증과 실제 계산이 한데 섞여 있다.
- 하나의 함수 안에서 책임이 두세 번 바뀐다.
함수 분리는 멋을 위한 기술이 아니라, 다시 읽을 미래의 나를 위한 배려다.
이 글의 포인트
- 함수는 멋보다 가독성을 위해 나눈다.
- 같은 이름을 붙일 수 있는 묶음이라면 함수 후보가 된다.
- 중복, 역할 변화, 설명 욕구가 보이면 분리 타이밍일 가능성이 높다.