Skip to content
isdnetworks
Go back

파일 사이 참조 관계

안 쓰는 파일을 정리하려는데 무엇이 안 쓰이는지 판단이 안 됐다. 경로와 클래스 이름을 문자열로 조립해 부르는 자리가 있었기 때문이다.

Table of contents

Open Table of contents

조립된 경로는 검색에 안 잡힌다

기준 경로에 이름을 붙여 읽는 코드와 접두어에 유형을 붙여 클래스를 만드는 코드가 섞여 있었다. 파일명이나 클래스명으로 검색하면 그 자리가 안 나온다.

정적 검색이 못 보는 참조가 있으면 안 쓰인다는 판정 자체가 성립하지 않는다. 검색 결과가 없다는 것과 부르는 곳이 없다는 것은 다른 말이었다.

실제로 읽은 것을 모으는 방법

정적으로 못 찾으니 돌려 보면서 실제로 읽힌 파일 목록을 남기게 했다. 며칠 모아서 전체 파일 목록과 대조하니 한 번도 안 읽힌 것이 백여든 개 넘게 나왔다.

며칠로는 부족해서 한 달을 모았더니 그 수가 절반으로 줄었다. 월말 배치가 돌면서 여러 개가 잡혔으므로 얼마나 모아야 하는지는 그 시스템의 실행 주기가 정했다.

안 읽힘과 안 쓰임의 차이

남은 것을 하나씩 열어 보니 옛 기능 잔재와 시험용과 복사본이 대부분이었다. 그런데 정말 쓰는데 안 잡힌 것도 섞여 있었다.

오류 화면처럼 특정 상황에서만 읽히는 파일이 그랬는데 그 기간에 그 오류가 안 났을 뿐이었다. 안 읽힌 것은 안 쓰이는 것이 아니라 그 조건이 안 일어난 것일 수 있다.

지우지 않고 옮기기

그래서 지우지 않고 보관 폴더로 옮겼다. 읽으려 하면 실패하고 로그에 남으므로 그때 되돌릴 수 있다.

옮기기 전에 목록을 미리 알렸더니 분기 결산에 쓴다는 답이 와서 하나를 목록에서 뺐다. 알리지 않았으면 그 결산이 안 됐을 것이고 실행 기록만으로는 그 주기를 못 잡았다.

참조 그림이 드러낸 층

정리하면서 참조 관계를 층으로 그렸더니 어디를 고치면 무엇에 영향이 가는지가 보였다. 층을 건너뛰는 참조도 그때 드러났다.

저장소 계층이 요청 객체를 참조하고 있어서 아래층이 위층을 부르는 자리가 있었다. 정리하고 나서 얻은 것은 줄어든 코드 양보다 검색 결과가 깨끗해져 찾는 시간이 준 것이었다.

정리


Share this post on:

Previous Post
보관물에 남겨야 하는 것
Next Post
매뉴얼 앞에 공통 동작을 규정하면