본문 바로가기

Programing

이름 짓기(naming things)은 어렵다.

도입

Phil Karlton은 컴퓨터 과학에서 어려운 두 가지를 아래와 같이 이야기했다. (Martin Folwer/Jatinder Singh이 전함)

There are only two hard things in Computer Science: cache invalidation and naming things.
컴퓨터 과학에서 어려운 것은 딱 두 가지다. 캐시 무효화, 그리고 이름 짓기

이름은 여러 문맥에 있다. 파일명, 클래스명, 지역 변수명, 데이터베이스 테이블, 컬럼명 등...

오늘의 사례

오늘은 테이블의 컬럼 이름을 짓는 것으로 논쟁을 했다.

슬랙에 오후 4시 48분에 글타래를 시작했다. 마지막 스레드는 오후 6시 9분이었다.

 

이름 짓기가 어려웠던 이유는 우리말로도 어려웠던 용어들이었기 때문이다.

  1. 산재보험요율
  2. 산재보험기준보수
  3. 필요경비율
  4. 고용보험요율
  5. 월보수
  6. 산재보험료
  7. 고용보험료
  8. 원천세3.3%

요율을 떠나 산재보험이라는 용어를 데이터팀 팀장은 industrial accident insurance 로 지었다.

출처는 고용보험 및 산업재해보상보험의 보험료징수 등에 관한 법률(Act On The Collection Of Insurance Premiums For Employment Insurance And Industrial Accident Compensation Insurance)에서 따왔다고 하였다.

 

제1조(목적) 이 법은 고용보험과 산업재해보상보험의 보험관계의 성립ㆍ소멸, 보험료의 납부ㆍ징수 등에 필요한 사항을 규정함으로써 보험사무의 효율성을 높이는 것을 목적으로 한다.

Article 1 (Purpose) The purpose of this Act is to enhance the efficiency of insurance business by prescribing matters necessary for forming and terminating insurance relationships for employment insurance and industrial accident compensation insurance, paying and collecting insurance premiums therefor, and other matters.

 

나도 사실 한국법제연구소의 법령번역센터의 도움으로 이름을 짓는 경우가 있다.

하지만 이렇게 이름을 짓다보니 국문 뿐만 아니라 영문도 낯선 단어가 있다보니 이해가 어려웠다. 그리고 길이가 늘어나서 가독성이 떨어진다.

 

고용노동부의 누리집에서 산재보험기금에 대한 내용이 있는 페이지가 있었다.

URL을 보면 알 수 있는데 산업재해보상보험의 줄임말 산재보험을 sanjae라고 사용을 하고 있었다.

SI 세계에서는 이렇게 우리말을 영문으로 음차해서 사용을 종종하고 있다고 알고 있다.

  • 구분: gubun
  • 사번: sabun
  • 주민번호: jumin no

 

그래서 음차 네이밍을 제안을 해보았다.

프론트엔드 개발자는 오히려 완전히 우리말로 음차를 하는 것을 제안을 했다.

산재보험 : sanjae bohum

하지만 데이터팀 팀장은 기존의 영문을 줄이는 방향으로 제안을 했다.

하지만 현직장에서 줄임말을 너무 사용했다가 이제는 풀어서 사용하는 사례가 있었다.

  • OID
  • PID
  • PLID
  • FID
  • RID

이 교훈으로 인해 줄임말은 피하는 것이 좋다고 생각했다.
더군다나 iai 를 industrial accident insurance 라고 생각하는 것은 네이티브도 어려울 것 같았기 때문이다.

 

전 직장 사례

전 직장에서 도로명주소 개편 개발시에 법령번역센터의 도움을 받아 사용했다.

  • 도로명 주소: road name address
  • 지번 주소: lot number address

그런데 당시 주소에 대한 정보를 제공했던 회원팀에서는 지번 주소를 lot number address를 사용하지 않고 jibun address 라고 썼다.

다른 도메인이기에 경계(boundary)를 넘을 때 번역(translation)을 수행해서 다른 이름은 큰 문제가 없었다.

 

나중에 ePOST 영문 페이지를 보니 지번 주소는 Land-Lot number address 를 사용하고 있었다.

 

하지만 전체 시스템에서 어디에서는 lot number address 를 사용하고 다른 곳에서는 jibun address 를 사용하고 동일한 기의(signifié)를 여러 기표(signifiant)로 사용한다는 것은 혼동과 혼란을 만들 수 있다. 도메인 주소 설계에서는Ubiquitous Language(보편 언어)라는 이름으로 도메인 전문가, 아키텍트, 개발자 등 프로젝트 구성원 모두에게 공유된 언어의 중요성을 강조했다.

 

사실 데이터팀의 팀장이 지었던 이름은 과거의 내가 지었던 이름과 유사했다.
그래서 이번에는 악마의 대변인(Advocatus Diaboli) 역할[각주:1]을 수행하여 왜 한국법제연구소의 법령번역센터에서 번역한 용어를 쓰지 않는 입장으로 의견을 냈다.

  • industrial accident insurance standard remuneration → 길이가 51자이다. / sanjae bohum → 12자이다!
  • accidentStdRemuneration, iaiRemuneration, accidentRemuneration (chatGPT) → 나의 chat GPT는 기준 보수를 "standard compensation" 또는 "baseline remuneration" 로 추천
  • 우리의 코드 혹은 테이블을 외국인이 봐야하는 상황이 있을까? → 한국 사람만 있는 우리 회사 개발자들이 코드를 영어로 쓰는 것, 영문 변수명을 쓰는 이유가 외국인 채용을 대비해서는 아니다. → 법령 혹은 외국인이 이해할 수 있는 단어가 오히려 직원에게 어려움을 준다면 실용성이 떨어지지 않을까? → 개발 효율을 위해 단축 이름을 쓰거나 주요 키워드 기준으로 단어 재구성을 하는 것은 찬성 → 한글을 사용하면 SQL이나 다른 곳에서 깨질 수 있기 때문에 한글은 지양해야한다고 생각
  • 한국어 음차 표기는 반대하는지? → 다른 서비스에서 계속해서 달라질 수 있기에 지양했으면 희망, 음차보다는 약어를 사용하는 것이 유지관리 측면에서 더 유리할 것으로 생각 → 과거 주문번호(order identity)를 OID로 줄여서 썼는데 이것이 order의 O인지 object의 O인지 혼동을 주는 일이 있어서 현재는 orderId 로 컨벤션을 정했듯이 줄여서 쓰는 것도 문제를 만들 수 있는 여지가 존재, 가령 고용의 employment 도 emp로 줄일까 생각했는데 electromagnetic pulse(EMP)로 혼동의 여지도 있다.

결론

회사에서 클린 코더라는 책을 스터디하고 있는데 9장 시간관리에서 켄트 백의 말이 적혀있었다.

Any argument that can’t be settled in five minutes can’t be settled by arguing. - Kent Beck
어떤 논쟁이든 5분 안에 해결되지 않으면 논쟁으로는 해결할 수 없다. - 켄트 벡

위의 이름짓기는 켄트 벡의 5분 안에 해결할 수 없는 문제 중 하나이다.

여기에 시간을 더 쏟는 것은 무의미한 것으로 생각했다.

  1. 가톨릭에서 어떠한 인물을 시복/시성하는 과정에서 그릇된 추대를 막기 위해 시복시성 청원인들의 반대편에 서서 시복시성을 가로막는 직책. [본문으로]

'Programing' 카테고리의 다른 글

[Kotlin] Android Study Jam -1 참여  (0) 2020.12.20
[macOS] git 에러  (0) 2020.02.29
[생각] 패러다임과 프레임 그리고 멱등성  (1) 2019.10.02
[Swift] 스탠포드 강좌 again  (0) 2019.08.31
[macOS] Trim force 명령  (0) 2019.08.11