Skip to content
isdnetworks
Go back

왜 껐는지부터 찾는다

상위 상품의 이미지를 하위에서 대신 쓰는 기능이 필요해서 찾아보니 이미 있었는데 주석 처리돼 있었다. 변수 정의는 살아 있고 조건도 그대로인데 본문만 주석이라 풀면 될 것처럼 보였다.

Table of contents

Open Table of contents

이력이 말한 이유

풀기 전에 언제 그렇게 됐는지를 이력에서 봤다. 커밋 메시지가 정보 반영 버그를 고쳤다는 내용이었고 버그를 고치면서 끈 것이었다.

차이와 관련 변경을 같이 보니 이유가 나왔다. 이 대체 로직이 편집 화면에 있어서 하위에 이미지가 없을 때 상위 것을 대신 보여 주는데 사용자는 이미지가 있다고 보고 저장하고 저장 로직은 하위에 이미지가 없다고 안다. 보이는 것과 실제 있는 것이 어긋나는 상태였고 그래서 껐다.

자리가 다른 같은 로직

내가 필요한 것은 전송 경로에서의 대체였다. 마켓으로 보낼 때 하위에 이미지가 없으면 상위 것을 보내려는 것이다.

같은 로직인데 자리가 달랐다. 편집 화면은 사용자가 그 값을 보고 저장을 결정하므로 표시와 실제가 같아야 하고 전송 경로는 읽어서 보내기만 하며 저장으로 돌아오지 않는다. 그래서 상위 대체는 전송 경로에만 적용하고 편집 화면은 하위 자신의 값만 표시하기로 범위를 한정했다. 이력을 안 봤으면 주석을 풀었을 것이고 같은 버그가 다시 났을 것이다.

한 커밋에 섞인 두 변경

이력을 보다가 같은 커밋이 다른 것도 고치고 있는 것을 발견했다. 작업 발행 코드가 조건문과 루프 안에 들어 있어서 취소할 기존 작업이 없으면 발행이 아예 안 되는 상태였다.

그 커밋이 발행을 루프와 조건 밖으로 꺼내서 고쳤다. 이 커밋은 편집 화면의 대체 로직 비활성화와 작업 발행 재구조화라는 성격이 다른 두 변경을 담고 있었는데 메시지는 하나였다. 어느 쪽이 그 버그였는지 메시지로는 알 수 없고 차이를 다 읽어야 갈리는데 커밋 하나가 한 가지를 하면 메시지가 곧 설명이 된다.

주석 처리의 함정

이번 건에서 다시 확인한 것이 있다. 주석 처리된 코드는 왜 껐는지를 알려 주지 않는다.

지웠으면 이력을 봐야 하고 이력에는 커밋 메시지가 있는데 주석으로 남기면 파일 안에 있으니 이력을 안 보고 풀면 되겠다고 넘어가게 된다. 역설적으로 지우는 쪽이 더 안전하고 굳이 주석으로 남기려면 왜 껐는지를 같이 적어야 한다.

정리


Share this post on:

Previous Post
검사가 실제로 검사하고 있는지 확인하는 법
Next Post
자리마다 따로 한 열거