Skip to content
isdnetworks
Go back

화면 이름과 코드 이름의 통일

기획 쪽에서 부르는 이름과 코드의 클래스 이름이 서로 다른 것을 여러 군데에서 보게 됐다. 대화에서 나온 이름으로 코드를 grep 하려면 매번 머릿속에서 한 번 번역해야 했다.

Table of contents

Open Table of contents

세 벌로 갈린 이름

정리해 보니 이름이 세 벌이었다.

화면·기획   강의실
코드        LearningSpace
DB          tb_class_room

회의에서 「강의실 목록에 정렬을 추가해 주세요」를 들으면 LearningSpace 를 찾고 그 안에서 tb_class_room 을 봐야 했다.

번역을 매번 한다는 것은 매번 틀릴 수 있다는 뜻이기도 했다. 실제로 비슷한 이름의 다른 대상과 헷갈려서 엉뚱한 코드를 열어 본 일이 있었다.

대응표와 기준 정하기

먼저 지금 상태를 표로 적었다.

화면        코드                DB
강의실      LearningSpace       tb_class_room
수강생      Learner             tb_student
과정        Curriculum          tb_course
평가        Assessment          tb_exam

넷 다 달랐고 표를 만드는 데 반나절이 걸렸다. 그것만으로도 도움이 됐지만 표를 계속 봐야 하는 것 자체가 비용이었다.

어느 쪽에 맞출지는 셋을 놓고 따져 정했다.

화면 이름에 맞춘다   회의에서 쓰는 말이다. 사람이 많다
코드 이름에 맞춘다   고칠 곳이 적다
DB 이름에 맞춘다     가장 안 바뀐다

LearningSpace 에 맞추면 대화하는 사람들이 매번 번역해야 하고 그 비용이 더 커서 화면 이름을 기준으로 삼았다.

코드부터 바꾼다

바꾸는 순서는 코드를 먼저 잡았는데 이름을 바꾸는 도구가 대부분의 참조를 함께 따라가 주기 때문이다. 다만 new $className 이나 class_exists 처럼 문자열로 클래스를 부르는 자리는 그 도구가 못 잡는다는 것을 알고 있어야 했다.

그런 자리를 grep 으로 따로 찾아서 손으로 고쳤고 그 목록을 표에 함께 적어 뒀다. 다음에 또 이름을 바꿀 일이 있으면 같은 자리를 다시 찾아야 하기 때문이다.

DB는 모델에서 흡수

MySQL 표 이름은 바로 바꾸지 않았다. RENAME TABLE 자체는 자료를 옮기지 않고 원자적으로 끝나지만 그 표를 부르는 코드가 함께 바뀌어야 해서 그 사이를 메울 중단 시간이 필요했다. 대신 모델 쪽에서 새 이름을 쓰고 실제 표 이름은 모델의 표명 속성 한 줄에만 남게 했다.

이렇게 하면 코드를 읽는 사람은 새 이름만 보게 되고 옛 이름은 한 곳에만 남는다. 왜 다른지를 그 자리에 적어 두는 것이 나중에 바꿀 때의 출발점이 됐다.

새로 만드는 것부터와 용어집의 쓰임

옛것을 전부 못 바꿔도 새로 만드는 것부터는 정한 이름을 지키게 했다. 그러지 않으면 정리하는 속도보다 어긋나는 속도가 빨라진다.

정리한 표는 그 뒤에 다른 자리에서도 쓰였는데 연동 규격을 쓸 때와 새로 온 사람에게 설명할 때였다. 이름을 맞추려고 만든 것이 그 자체로 문서 하나가 된 셈이었다.

정리


Share this post on:

Previous Post
다른 테이블에 부과된 페널티
Next Post
에러 응답에 없는 성공 키