'데이터가 어디서 어떻게 바뀐 것인지'를 파악하기 힘들면
시스템을 이해하기 어려울 수 있다.
최근에 꽤 오래된 시스템을 리팩터링을 하면서 든 생각이다.
해당 시스템은
몇 가지 객체를 추적하는 트래킹 시스템인데,
여러 가지 모듈로 구성이되며 각 모듈은 전달 받은 데이터를 변형시켜 다음으로 전달한다.
위와 같은 상황에서,
데이터가 어디서 어떻게 바뀐 것인지 잘 파악이 되지 않아
고생을 했다.
예를 들어,
분명히 디텍션 모듈에선 [[bbox], [class], [prob]] 포맷으로 아웃풋을 뽑는데,
최종 데이터 저장 결과 파일의 디텍션 부분에는 왜 [**bbox, class, prob] 포맷이지????
도대체 어디서 바꾼건가???
처음엔 대충 모듈명만 보고
당연히 여기서 포맷을 건들지 않을까?
라는 생각으로 뜯어보면 아니고, 아니길 계속 반복하다가
결국 바운딩 박스의 겹치는 정도를 보고 적당히 통합해주는 모듈(NMS ; non maximal suppression)에서
해당 포맷을 아무도 모르게 바꾸고 있었다.
최종 결과를 저장하기 직전에 바꾼것도 아니고,
그냥 거기서 바꿨다.
코멘트를 잘 남기는건 당연히 중요한 부분이고,
더 나아가
데이터의 변경 점에 대한 추적을 잘 하려면 어떤 코드를 짜야할지, 고민해볼 필요가 있다.