읽기 쉬운 코드와 함수

읽기 쉬운 코드가 좋다. 읽기 쉬운 코드를 만들기 위해서 딱 한 가지 구체적인 기술을 사용하라고 한다면 나는 함수를 사용하는 것을 선택하겠다. 함수로 만들면 만든 개발자의 의도를 알기 쉽다. 함수에 문제가 있다면 그다음 개발자가 이어서 리팩터링 할 것이다. 이전 개발자가 코딩을 멈추어도 그다음 개발자가 함수 단위로 문제를 해결할 수 있다. 이 함수에 조금 특별한 특징을 부여하면 좋다. 인자는 한 개, 돌려주는 인자도 한 개 함수 밖에 선언된 코드를 변경하지 않는다. 순수 함수라고도 한다. 이런 함수는 많이 사용할수록 코드 읽기가 쉬워진다. 누가 읽어도 쉬운 코드가 된다. 한 줄의 코드라도 함수로 바꾸어 사용할 때 읽기 쉬워진다. 그렇다고 함수 천지를 만들겠다는 뜻은 아니다.

예를 들어 여기 코드가 있다.

item[0].type === "screen"

이 코드의 의미는 아래와 같이 함수로 만들 때 더 명확해 진다.

function isScreenType(item) {
  if(item && item[0] && item[0].type) {
    return item[0].type === "screen" ;
  }
  return false;
}

if 문을 같이 사용해 보자.

if(item[0].type === "screen") {
}

if(isScreenType(item)) {
}

이름 만으로 개발자의 의도를 알 수 있다. 아이템 타입을 검사하려고 한 것이다. 이 시점에서 isScreenType 함수 내부를 볼 필요는 없다. 궁금하다면 그때 보면 된다. 비슷하다고 생각할 수도 있지만 만약에 “screen” 대신 “stream”으로 변경되었다고 생각해 보자. 함수로 변경된 코드는 함수 내부만 변경하면 된다. 코드 변경의 범위가 isScreenType 함수로 제한된다. 어느 것이 더 읽기 쉬운가? 이름을 가지고 있는 함수의 경우가 더 명확하다. 변경 커밋을 비교 툴로 본다고 상상해 보자. 함수 하나의 변경 내용을 보는 것과 if 문이 포함된 더 큰 범위의 코드를 보는 것과 비교한다면 어떤가? 개발하는 도중에 이런 코드 변경은 계속 일어나기 마련이고 개발자는 변경 의도를 계속 추적하면서 코드를 수정해야 한다. 시간이 지나고 다른 개발지가 일을 이어서 하는 상황에서도 함수는 의도를 파악하는데 도움을 줄 것이다. 눈치챘겠지만 이 함수는 순수 함수다 그래서 테스트하기 좋고 다른 함수로 교체하기도 좋다.

예전과 다르게 지금의 나는 읽기 좋은 코드에 가장 높은 우선순위를 두고 있다. 우선 함수형 프로그래밍 방법을 사용하는데 이해하기 쉬운 코드를 작성하는데 도움을 준다. 그다음은 테스트 코드를 작성한다. 테스트하기 쉬운 코드는 그 자체가 읽기 쉬운 코드가 된다. 읽기 쉬운 코드를 만들기 위해서 여러 툴, 라이브러리, 패턴 등을 사용해야 한다. 이렇게 코딩을 하는 것이 나를 위해서 좋았다. 코드가 짧아지고 테스트하기 좋아지고 버그 추적하기 쉬워진다. 읽기 쉬운 코드 만들기 위해 함수를 사용하는 것은 정말 좋다고 생각한다.

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.