본문으로 건너뛰기
유환호 연락하기

홈 / 기록

주석에 적어 둔 규칙을 코드가 강제하지 않으면 다시 깨진다

한눈에 답변

로고 파일을 만들 때 '배경을 완전 불투명하게 만든다'고 주석에 적어 두고도, 모서리를 둥글게 깎는 속성 하나 때문에 네 귀퉁이가 실제로는 투명하게 남아 있었다. 생성 스크립트에 이미지의 투명도 최솟값을 검사해 완전 불투명이 아니면 실패시키는 자동 가드를 추가했다. 주석만으로는 다음에 같은 실수가 반복되는 것을 막지 못한다는 것을 그 자리에서 확인했다.

무엇이 다시 깨졌나

바로 전 작업에서 로고 이미지를 완전 불투명하게 만든다고 결정하고 주석에도 그렇게 적어 두었다. 그런데 실제로는 모서리를 둥글게 깎는 속성 하나가 남아 있어서, 이미지의 네 귀퉁이가 투명한 상태로 나가고 있었다.

왜 이게 문제인가

검색 결과에 로고가 어떤 배경 색 위에 얹힐지는 우리가 정할 수 없다. 모서리가 투명하면, 밝은 배경 위에서는 그 자리의 다크 테마 전용 잉크 색이 사라져 보인다. 완전 불투명으로 만들겠다는 결정 자체는 맞았는데, 구현이 그 결정을 지키지 못하고 있었다.

왜 주석만으로는 부족했나

‘완전 불투명으로 만든다’는 문장은 코드 옆 주석으로만 존재했다. 사람이 다음에 이 파일을 다시 손볼 때 그 주석을 읽지 않으면, 혹은 다른 이유로 모서리를 둥글게 하는 속성을 다시 넣으면 같은 문제가 재발한다. 실제로 이번이 바로 그 경우였다 — 처음 만들 때 이미 결정했던 것을 다음 수정에서 놓쳤다.

어떻게 재발을 막았나

이미지 생성 스크립트 안에 투명도를 검사하는 자동 가드를 넣었다. 생성 직후 이미지의 투명도 최솟값을 확인해서, 완전 불투명(최솟값이 최댓값과 같음)이 아니면 그 자리에서 스크립트를 실패시킨다.

가드가 실제로 작동하는지 어떻게 확인했나

일부러 모서리를 둥글게 하는 속성을 다시 넣고 스크립트를 돌려서 정확히 그 지점에서 실패하는 것을 확인했다. 그런 다음 그 속성을 빼고 다시 돌려 통과하는 것도 확인했다. 가드 코드를 작성하는 것과, 그 가드가 실제로 의도한 상황을 잡아내는지 검증하는 것은 다른 일이다.