better way

01. 데이터가 어디서 어떻게 바뀐것인지

식피두 2020. 10. 21. 15:47

'데이터가 어디서 어떻게 바뀐 것인지'를 파악하기 힘들면

시스템을 이해하기 어려울 수 있다.

 

최근에 꽤 오래된 시스템을 리팩터링을 하면서 든 생각이다. 

 

해당 시스템은 

몇 가지 객체를 추적하는 트래킹 시스템인데,

여러 가지 모듈로 구성이되며 각 모듈은 전달 받은 데이터를 변형시켜 다음으로 전달한다.

 

 

위와 같은 상황에서, 

데이터가 어디서 어떻게 바뀐 것인지 잘 파악이 되지 않아

고생을 했다.

 

예를 들어,

분명히 디텍션 모듈에선 [[bbox], [class], [prob]] 포맷으로 아웃풋을 뽑는데,

최종 데이터 저장 결과 파일의 디텍션 부분에는 왜 [**bbox, class, prob] 포맷이지????

 

도대체 어디서 바꾼건가???

 

처음엔 대충 모듈명만 보고

당연히 여기서 포맷을 건들지 않을까?

라는 생각으로 뜯어보면 아니고, 아니길 계속 반복하다가

 

결국 바운딩 박스의 겹치는 정도를 보고 적당히 통합해주는 모듈(NMS ; non maximal suppression)에서

해당 포맷을 아무도 모르게 바꾸고 있었다.

 

최종 결과를 저장하기 직전에 바꾼것도 아니고,

그냥 거기서 바꿨다. 

 

코멘트를 잘 남기는건 당연히 중요한 부분이고,

더 나아가

데이터의 변경 점에 대한 추적을 잘 하려면 어떤 코드를 짜야할지, 고민해볼 필요가 있다.