Skip to content
isdnetworks
Go back

의미의 정본은 코드다

공통 코드 마스터를 다른 시스템에서 옮겨 심는 작업을 일차로 끝냈다. 끝낸 뒤에 원본 프로젝트 셋을 다시 전수로 훑으니 어긋난 것이 다섯 나왔다.

Table of contents

Open Table of contents

옮긴 뒤 원본을 다시 훑은 이유

옮기는 동안에는 옮기는 것에 집중하므로 무엇이 빠졌는지가 잘 안 보인다. 끝난 뒤에 원본 쪽에서 거꾸로 보면 이것은 왜 안 옮겨졌는지가 드러난다.

옮기는 방향과 검증하는 방향을 반대로 잡는 것이 이 재분석의 조건이었다. 같은 방향으로 한 번 더 보면 같은 것만 다시 보게 된다.

의미가 반대로 들어간 코드 그룹

배너 링크를 여는 방식을 정하는 코드 그룹에서 두 값의 뜻이 서로 바뀌어 들어가 있었다. 화면 코드가 실제로 분기하는 조건과 데이터베이스에 적힌 이름이 반대였다.

이 오류는 아무것도 깨뜨리지 않는데 배너를 누르면 열리기는 열리고 여는 방식만 뒤집힌다. 로그에도 안 남고 예외도 없으므로 사용자가 말해 주기 전에는 알 방법이 없다.

문서가 아니라 분기하는 코드

이 값의 의미를 확인한 곳은 설계 문서가 아니라 그 값을 비교해 동작을 가르는 조건문이었다. 문서는 낡을 수 있고 데이터베이스의 이름 컬럼은 사람이 적은 것이다.

실제로 그 값에 따라 행동이 갈리는 자리가 의미의 정본이다. 이름과 문서와 코드가 어긋날 때 어느 쪽을 믿을지가 여기서 정해졌다.

마스터 있음과 하위 있음

세 그룹은 마스터가 아예 없었고 두 그룹은 마스터는 있는데 하위 코드가 하나도 없었다. 앞의 것은 관리 화면의 빈 선택지로만 드러나고 뒤의 것은 마스터 존재만 세면 통과한다.

그래서 점검을 마스터가 없는 그룹과 마스터는 있으나 하위가 0인 그룹으로 나눠서 각각 셌다. 하나의 조회로 둘을 함께 세면 뒤쪽이 통과로 잡힌다.

이름과 컬럼 목록의 어긋남

한 그룹은 원본 셋 모두에서 쓰는 이름과 다르게 옮겨져 있었는데 옮기면서 더 명확해 보이는 이름으로 바꾼 것으로 보였다. 이름은 사용처를 따르는 것이므로 임의로 고치면 그 뒤의 대조가 전부 어긋난다.

하위 코드 테이블의 정의에는 다국어 이름 컬럼이 있는데 적재 문장에는 그 컬럼들이 빠져 있었다. 정의의 컬럼 목록과 적재의 컬럼 목록을 나란히 놓고 봐야 잡히는 종류였다.

정리


Share this post on:

Previous Post
범위를 적고 시작하는 스윕
Next Post
중복되는 말단 코드