Skip to content
isdnetworks
Go back

대상마다 다른 저장 자리와 형식

연동 채널이 여섯이었는데 새 채널을 붙일 때마다 여러 파일을 고쳐야 했다. 경로와 형식과 인코딩을 채널별로 가르는 같은 분기가 파일마다 반복되고 있었다.

Table of contents

Open Table of contents

열네 곳에 흩어진 분기

채널로 가르는 분기를 세어 보니 열네 곳이었다. 새 채널을 붙이면 그 열네 곳을 전부 찾아 넣어야 했다.

그중 하나를 빠뜨려서 문제가 난 적도 있었다. 같은 축으로 가르는 분기가 여러 곳에 있으면 하나가 빠지는 것은 시간문제다.

한 줄에 모은 규격

채널의 모든 속성을 담는 규격 객체를 만들고 채널별로 한 줄씩 정의했다. 경로 패턴과 형식과 구분자와 인코딩과 날짜 형식과 헤더 유무가 한 줄에 있다.

읽는 쪽은 채널 코드로 규격을 가져와 경로를 만들고 파서를 얻어 처리한다. 분기가 열네 곳에서 한 곳으로 줄었다.

붙여 보며 확인한 빈 자리

새 채널을 한 줄 추가해 봤더니 그 형식의 파서가 없어서 예외가 났다. 파서를 만드는 자리에서 모르는 형식이면 예외를 던지게 해 뒀기 때문이다.

그 자리에서 예외가 나므로 조용히 넘어가 실제 처리 시점에 드러나는 일이 없다. 파서 하나만 만들고 다른 파일은 안 고쳤다.

표를 검사하는 시험

규격 표 자체가 맞는지를 확인하는 시험도 만들었다. 형식이 허용 목록에 있는지와 경로 패턴이 비어 있지 않은지와 날짜 자리가 들어 있는지와 파서가 존재하는지를 본다.

날짜 자리가 없는 항목을 하나 잡았는데 매일 같은 파일을 읽고 있었다. 자리 종류는 경로 앞부분으로 갈라 흡수해서 표에 따로 안 적어도 되게 했고 채널별 자잘한 예외도 표의 항목으로 넣어 파서 안의 조건문을 없앴다.

종료된 채널의 자리

표를 화면에서 볼 수 있게 하니 운영하는 쪽이 인코딩이나 구분자를 물어보지 않게 됐다. 코드를 보고 답하던 것이 표를 보고 답하는 것으로 바뀌었다.

채널 하나가 계약 종료로 없어졌을 때는 표에서 지우지 않고 종료 목록으로 옮겼다. 옛 자료에 그 채널 코드가 남아 있어서 규격이 필요하므로 조회는 되되 새 처리는 안 하게 했고 지웠으면 옛 자료를 못 읽었을 것이다.

정리


Share this post on:

Previous Post
옮기기 직전 상태의 기록
Next Post
채널 이름 하나, 시스템 둘