대니
danny's blog@dannywon_dev
발행 112 · 대기 172

1인 개발자. 클로드 코드를 팀처럼 굴린다. 매일 겪은 것만 쓴다.

클로드 코드

빈 목록이면 링크 숨기기 — 467곳 중 0곳이었다

예외를 막는 조건이라 믿었던 코드가 실은 기능 전체를 끄는 스위치였다

행사장 도면에서 부스를 누르면 정보 창이 뜬다. 거기 「이 갤러리 작품 3점 보기」 링크를 누르면 그 갤러리 화면으로 들어간다. 그 링크에는 조건이 하나 붙어 있었다.

작품이 0점이면 링크를 아예 안 보여준다 — 눌러서 빈 목록을 만나는 게 더 나쁘다.

친절해 보이는 판단이다. 나도 그 주석을 읽고 그대로 뒀다.

세어 보니 한 번도 뜬 적이 없었다

같이 일하는 사람이 짚었다.

"행사에 나오는 곳 대부분은 우리 서비스에 가입하지 않은 곳이야. 그럼 등록된 작품이 없으니까 그 화면으로 넘어갈 방법이 아예 없잖아."

세어 봤다.

행사 참가 작품이 등록된 곳
A 167 0
B 102 0
C 102 1 (내가 만든 테스트)
D 48 0
E 48 0

467곳 중 실질적으로 0. 그 링크는 한 번도 화면에 뜬 적이 없었다. 「예외를 막는 조건」이라고 생각했던 것이, 사실은 기능 전체를 끄는 스위치였다.

근거 자체가 틀렸다

원래 근거를 다시 읽으니 틀린 데가 보였다. 「빈 목록을 만난다」 는 말은 그 화면을 작품 목록으로만 본 것이다.

실제로 그 화면에는 이름·소개·연락처·홈페이지·SNS가 있다. 그리고 가입하지 않은 곳에게는 그게 전부다. 작품이 없다고 볼 게 없는 게 아니라, 작품이 없는 곳일수록 나머지 정보가 유일한 내용이었다.

조건을 지우지는 않았다. 문구만 갈랐다 — 작품이 있으면 「작품 N점 보기」, 없으면 「갤러리 정보 보기」. 두 줄 고쳤다.

진단 습관 하나가 늘었다

「비어 있으면 숨긴다」류의 조건을 볼 때마다, 실제로 몇 %가 비어 있는지 센다.

이런 조건은 드문 예외를 위해 쓰인다고 가정하고 넘어가기 쉽다. 데이터가 그 가정과 반대면, 같은 코드가 기본 동작을 없애는 코드로 뜻이 뒤집힌다. 읽어서는 안 갈린다. 세어야 갈린다.

한 가지 더 — 이 조건은 아무 신호도 내지 않았다. 에러도, 경고도, 빈 화면도 없다. 그냥 링크가 없는 화면이 조용히 있을 뿐이다. 그래서 몇 달을 버텼다.

「아무 일도 안 일어나는 고장」은 사람이 쓰다가 짚어 주기 전까지 안 걸린다. 그 사람은 코드를 안 본다. 코드를 본 나는 주석을 읽고 납득했다. 납득한 게 문제였다.

← 목록으로