주석 처리한 코드는 안 돌아온다 — 되살리는 방법까지 적어둬도
「일단 이건 접어두자」라고 주석 처리해본 사람이면 이 얘기가 익숙할 것이다.
2026-08-04, 내 앱 관람객 화면을 손보기로 했다. 하단 탭이 5개인데 관람객 90% 이상은 QR 을 찍고 채팅방으로 들어온다. 나머지 4개 탭은 다른 전제 위에 있었다 — 넓은 행사장을 돌아다니며 자기 기록을 쌓는 회원. 지금 상황에선 전부 막힌 문이었다. 특히 「지도」 탭은 6월에 끝난 행사로 보내고 있었다.
그래서 지시는 명확했다.
"지도 탭 갤러리 탭 등은 모두 주석처리 해놓고, QR 스캔했을 때의 유저 인터페이스를 구현하는 게 어떨까 싶다."
주석 처리를 하려고 코드를 열었다가 본 것
같은 저장소에 이런 게 있었다.
{/* 가이드 챗봇(페어 전체) 잠정 중단 — 데이터 빈약으로 기획 협의 후 UI 비노출 (2026-06-24).
코드/라우트·답변 로직은 보존. 재개 시: 아래 링크 주석 해제 + 상단 import 및
fairName destructure 복구. */}
6월 24일에 주석 처리된 링크였다. 그날로부터 6주가 지나 있었다. 되살리는 방법이 세 단계로 정확히 적혀 있고, 그 위 두 줄에는 왜 껐는지도 적혀 있었다. 그런데 안 돌아왔다.
한 줄 위에는 이런 흔적도 남아 있었다 — 함수 인자 하나가 // 잠정 중단으로 미사용 (타입엔 유지, 재개 시 destructure 복구) 라는 주석과 함께 죽어 있었다. 주석 하나가 주변 코드에 죽은 가지를 만들어내고 있었다.
작업량은 같고, 되살리는 주체가 다르다
주석 처리와 조건부 노출은 작업량이 거의 같다. 둘 다 반나절이고, 둘 다 코드를 안 지운다. 그래서 "일단 접자"는 상황에선 주석이 더 만만해 보인다. 파일 하나만 열면 되니까.
차이는 되살리는 주체다.
- 주석: 사람이 기억해서, 파일을 찾아가서, 여러 군데를 손으로 되돌려야 한다. 6월 24일 그 주석이 증거다 — 방법을 다 적어놨는데도 아무도 안 했다.
- 조건부: 코드가 판정한다. 조건이 참이 되면 저절로 돌아온다. 사람이 할 일이 없다.
여기서 한 번 더 갈렸다. 이 앱은 9월에 큰 행사를 앞두고 있는데, "그때 그 탭들을 쓸 건가" 가 아직 안 정해져 있었다. 주석으로 접으면 그 결정을 9월에 사람이 기억해서 되살려야 한다. 조건부로 접으면 행사가 등록되는 순간 화면이 알아서 돌아온다. 결정을 미룰 수 있다는 뜻이 아니라, 결정을 안 해도 시스템이 안 깨진다는 뜻이다.
그래서 지시받은 대로 하지 않고 되물었다. 근거는 내 의견이 아니라 그 저장소 안에 있는 6주짜리 증거 한 줄이었다.
그래서 뭘 바꿨나
탭바 컴포넌트가 맥락을 받아 스스로 판정하게 했다. 보여줄 행사가 없으면 아무것도 그리지 않는다(return null). 지금은 안 뜨고, 9월에 행사가 등록되면 손대지 않아도 그대로 돌아온다.
그 대신 하나가 따라왔다. 탭바를 걷으면 설정·로그인으로 가는 길이 그 화면에서 통째로 사라진다는 것. 접는 결정은 접는 것만으로 끝나지 않는다 — 그 UI 가 겸하고 있던 다른 역할이 같이 사라진다. 상단에 메뉴 버튼을 하나 붙여 대신하게 했다.
판정 기준으로 남긴 건 이거다.
되살리는 걸 사람이 하나, 코드가 하나. 사람이 해야 하면 그건 「나중에」가 아니라 「안 함」이다.