Skip to content
isdnetworks
Go back

죽은 런타임의 이름이 남은 API

문서를 출력하는 기능이 상용 리포트 뷰어를 쓰고 있었고 통합 부분은 짧은 페이지 하나가 전부였다. 그 파일을 열어 보니 줄 수는 짧은데 손볼 것이 여럿 있었다.

Table of contents

Open Table of contents

51줄짜리 통합 페이지

첫 줄부터 이미 사라진 실행 환경의 이름이 들어간 함수를 부르고 있었다. 그 환경은 오래전에 지원이 끝났고 지금은 아무 관계가 없다.

상용 제품의 함수 이름은 제품이 지나온 역사를 그대로 담고 있어서 지금 무엇을 하는지와 안 맞는 경우가 있다. 이름이 가리키는 것이 이미 없어도 호환을 위해 이름만 남는다.

화석이 된 이름

이름만 보고 이 함수가 무엇을 하는지 짐작하면 틀린다. 그래서 문서를 찾아서 그 함수가 지금 실제로 무엇을 하는지를 확인해야 했다.

이런 자리에는 왜 이 이름인지를 짧게 주석으로 남겼다. 다음 사람이 이름을 보고 지워도 되는 것으로 오해하지 않게 하기 위해서였다.

같은 값을 두 곳에 넣고 있었다

설정 값을 문자열로 넘기는 부분이 있었는데 같은 값을 두 계층에 각각 넣고 있었다. 한쪽만 고치면 다른 쪽이 옛 값으로 남아서 그 값으로 동작한다.

실제로 어느 쪽이 우선하는지를 확인해서 한 곳으로 줄였다. 같은 값이 두 자리에 있으면 그 자체가 언젠가 어긋나는 원인이 된다.

개수를 따로 세는 파라미터

인자를 넘기면서 그 개수를 별도로 적는 자리도 있었다. 인자를 하나 추가하면서 개수를 안 고치면 마지막 것이 조용히 무시된다.

오류가 안 나고 값만 안 들어가므로 나중에 왜 안 되는지를 찾게 된다. 개수를 따로 세는 구조는 그런 창을 만들어 둔다는 것을 알고 써야 했다.

복사한 예제의 잔재

제품 예제를 복사해서 만든 흔적이 남아 있었는데 주석 안에 내부 주소가 그대로 들어 있었다. 안 쓰는 부분을 안 지우면 그것이 그대로 배포된다.

디버그 표시가 켜진 채로 운영에 나가 있는 것도 함께 발견했다. 마지막으로 이 라이브러리를 왜 못 올리는지를 적어 뒀는데 낡았다는 사실보다 그 이유가 다음 판단에 쓰인다.

정리


Share this post on:

Previous Post
추천 종류마다 나눈 테이블
Next Post
인계 문서에서 빠지면 안 되는 것