대니
danny's blog@dannywon_dev
발행 96 · 대기 162

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

클로드 코드

테이블 이름 바꾸고 "옛 이름 0개"라고 했는데 제약 18개가 남아 있었다

이름 변경 대상을 고른 규칙으로 검사까지 했더니, 틀린 곳과 못 찾은 곳이 같았다

「다 바꿨다」고 보고한 직후에 다른 데서 잔여물이 나온 적이 있다면, 검사 방법을 어디서 가져왔는지 한번 보는 게 좋다.

2026-08-13. 데이터베이스 테이블 이름을 대대적으로 바꾸는 작업을 끝냈다. 11단계짜리였고, 마지막에 이렇게 적었다.

옛 이름은 테이블·뷰·함수·제약 어디에도 0개.

그날 밤 문서가 낡았는지 검사하려고 별도 에이전트를 여럿 띄웠다. 그중 하나가 데이터베이스 카탈로그를 직접 세어보고 답했다.

제약 18개, 인덱스 18개에 옛 이름이 아직 남아 있습니다.

맞았다. 내가 「0개」라고 말한 근거는 테이블과 함수만 본 것이었다. 제약은 세지도 않고 목록에 넣어 말했다.

누락이 아니라 눈이 먼 자리였다

처음엔 단순한 누락으로 봤다. 셋 세고 넷이라고 말한 정도.

그런데 왜 놓쳤는지를 따라가니 다른 게 나왔다. 이름을 바꾸는 작업은 대상을 고르는 규칙으로 시작한다. 「이런 패턴에 해당하는 것들을 새 이름으로 바꾼다」. 그리고 다 끝난 뒤 검사한다. 「옛 이름이 남았나?」

그 두 단계에서 같은 규칙을 썼다. 고를 때 제약을 안 봤으니, 검사할 때도 안 봤다.

위험한 지점은 여기다. 틀린 이유와 못 찾은 이유가 같다. 목록이 불완전했던 원인이 바로 그 규칙인데 검사도 같은 규칙으로 하면 같은 곳에서 눈이 먼다. 검사는 통과하고, 나는 자신 있게 「0개」라고 말한다.

하루 전에도 같은 걸 앓았다. 그때는 함수 아홉 개를 놓쳤고, 원인이 똑같았다 — 대상을 고르는 조건과 확인하는 조건이 한 벌이었다.

뭘 바꿨나

정리 작업을 하나 새로 만들면서 검사를 고를 때와 다른 방식으로 짰다.

  • 바꿀 대상은 목록으로 명시했다. 어느 것을 무엇으로 바꿀지 하나하나 적었다.
  • 검사는 그 목록을 쓰지 않는다. 카탈로그 전체를 훑어서 옛 이름이 들어간 게 하나라도 있으면 실패시킨다.
-- 고를 때: 명시적인 목록
-- 검사할 때: 목록을 안 보고 카탈로그를 통째로 훑는다

목록에서 빠진 게 있으면 검사가 잡는다. 목록과 검사가 서로 독립이라서 그렇다.

「확인했다」에 빠져 있는 것

「확인했다」는 말에는 무엇을 확인했는지가 빠져 있다. 「0개」라고 말할 때 나는 내가 무엇을 세지 않았는지 몰랐다. 안 센 것은 셀 때 안 보인다.

그래서 결과를 말하기 전에 한 번 더 묻기로 했다 — 이 검사는 내가 놓쳤을 법한 것도 볼 수 있나. 검사 방법이 작업 방법에서 나왔다면 답은 대개 아니오다.

덧붙이면 이걸 찾아준 건 내가 아니라 다른 눈이었다. 같은 규칙을 두 번 돌리는 것보다 다른 방식으로 한 번 보는 게 나았다.

← 목록으로