코드의 명시성을 통해 돌아보는 좋은 프로그래밍

개발 끄적끄적 .. ✍️·2021년 12월 14일
0
  • Example 1
    A * 60 / 3600
  • Example 2
    A / 60

이 두 예시에 대한 결과 값은 동일하다. 이 둘의 차이는 무엇일까 ?

A * 뒤에 오는 연산은 동일하게 1분에 대한 연산이다. 하지만 위의 식은 60초 / 3600초 를 통해 1분을 나타냈고, 아래 식은 60초를 통해 1분을 나타냈다. 이 고민의 시작은 어떤 연산식을 작성하고 연산식에 대한 고민점을 팀장님과 이야기하다가 나오게 되었다. 나는 위의 식으로 연산 코드를 작성했고, 팀장님께서는 아래 식을 추천해주셨다.

이 두 개의 식의 차이는 크게 두 가지이다

  1. 연산 횟수의 차이
  • 먼저 위의 식의 경우 2번의 연산이 진행된다.
  • 곱셉, 나눗셈 연산이 각각 진행되고 아래 식은 한 번의 나눗셈 연산만이 진행된다.
  • 하지만 최신의 컴퓨팅 파워에서는 차이를 찾기에는 어렵다.
  1. 코드를 통해 무엇을 보여주려고 하는가
  • 나는 위의 식을 코드에 작성했다. 내가 보여주려고 했던 것은 결국 1시간 당 1분을 보여주고 싶어 60 / 3600이라고 코드에 명시했다.
  • 하지만 내가 놓친 부분이 있었다. 어쨌든 내가 사용하는 데이터는 분 단위 데이터라는 점이다. 팀장님이 생각 할 때 위의 식의 경우는 초단위 데이터를 다룰 때 사용하면 보다 적절한 식이고 현재의 상황에서는 아래 식을 통해 1분을 나타내는게 더 적절하다고 말해주셨다.

나는 코드를 통해서 무엇을 보여주려고 했는가?

1분 당의 변화를 나타내고 싶었고 그것을 굳이 굳이 풀어서 60/3600라고 표현했다. 하지만 내가 사용하는 데이터는 초가 아닌 분 단위 데이터였고 초 단위 변화량이 차이가 없음에도 3600이라는 초 단위를 코드에 명시했다. 경력 개발자가 보면 (저런 명시적 표현에 익숙한 ?) "초 단위 데이터를 사용하는 구나" 라고 충분히 생각할 수 있는 코드였다.

작은 노력들이 좋은 프로그램을 만든다

추가적으로 팀장님에게 중요한 메시지를 전달 받았다. 좀 전에 나눈 이야기가 최신의 컴퓨팅 파워등을 미루어 보았을 때 실제 동작이나 결과에는 큰 차이가 없을 수 있다. 하지만 중요한 것은 이러한 작은 디테일과 작은 노력들이 모여 프로그램을 만들었을 때 그렇지 않은 동일한 프로그램과 비교해보면 분명한 차이가 있을 것이다. 물론 앞으로 매 순간 한 줄 한 줄에 모든 공을 들여가며 세심하게 코드를 작성하기는 쉽지 않지만 지금까지의 나의 코드들을 돌이켜보는 중요한 메시지였다.

마무리

팀장님께서 늘 해주시는 말이 있다. "제가 정답은 아니지만 제가 생각할 때는(혹은 제 기준에서는) ~" . 오늘의 경험은 내가 앞으로의 코드를 작성할 때 정답이 되었다.

0개의 댓글