설명이 아닌 내부 코드 이름을 사용하는 이유는 무엇입니까? [닫은]


16

코드 이름을 사용하는 것이 꽤 널리 퍼져 있다고 생각합니다. 우리 회사에서도 사용하고 있습니다.

그러나 나의 주요 관심사는이 이름들이 보통 어디에도 문서화되어 있지 않다는 것입니다. 그리고 그 의미는 입소문에 의해 퍼집니다. 이름은 이름이 지정된 도구 또는 엔티티의 기능과 관련이 없습니다.

내부 테스트 머신은 별자리 이름을 따서 명명되었으며, 공용 서버는 그리스 신을 따서 명명되었습니다. 그리고 프로젝트는 장소 또는 무작위로 선택된 영화 배우 또는 캐릭터 이름의 이름을 따서 명명되었습니다. 그러나 기계가 Windows인지 Linux인지에 상관없이 이름에서 직접 사용할 수있는 정보는 없습니다. 32 또는 64 비트 서버 또는 프로젝트가 무엇입니까?

누군가가 "Gandalf"프로젝트 나 "Callanish"프로젝트 또는 다른 프로젝트를 방금 분기 한 VCS의 커밋 메시지를 볼 때 기분이 좋지 않습니다. 같은 이유로 함수와 변수의 이름을 일반적으로 지정하지 않습니다.

나는 적어도 새로운 실체에 대해 더 설명적인 이름을 사용해야한다고 제안했지만 나는 매우 강한 반대에 직면했다. 분명히 나를 제외한 조직의 모든 사람들은 그런 이름을 짓는 것을 좋아합니다.

설명이 아닌 코드 이름을 사용하는 이유는 무엇입니까?

프로그램 버전과 이정표의 이름을 지정하거나 마케팅상의 이유로 좋은 제품 이름을 갖는 데 아무런 문제가 없습니다. 그러나 다른 모든 장소는 설명적인 이름을보고 싶습니다.

편집하다:

Gandalf는 코드 64 비트를 포팅하는 프로젝트입니다. 칼라 니 쉬는 어떤 포트를 안드로이드로 포팅 하는가 ... 나는 이전 브랜치 64 비트 포팅과 후자의 안드로이드 포팅이라고 부른다. 배송 할 대상 버전을 나타내는 접미사가 첨부되어있을 수 있습니다. 그래서 모든 사람들은 그것이 무엇인지 이름으로 알 것입니다.

문제의 서버는 제품을 테스트하는 가상 머신 이미지입니다. 실제로 실제로 실행되는 물리적 머신을 모르겠습니다. 따라서 windowsxp_32, windows7_64, debian_32 또는 solaris_64라고 부르는 것이 좋습니다.


6
당신을 설명하는 것이 다른 사람에게는 충분히 설명 적이 지 않을 수도 있습니다. 이름은 이름입니다. 혼란이나 의견 불일치
로비 디

1
너무 많은 답변이 있지만 "목적 또는 그리스 신으로 서버 이름을 지정해야합니까?" 그렇습니다. fileserver4는 ftp를 사용하는 서버를 기억할 때 Aphrodita보다 기억하기 쉽습니다.
Vorac

2
이 질문은 소프트웨어 개발과 관련이 없기 때문에 주제가 아닌 것으로 보입니다.
Mike Partridge

4
이름이 뭐야? 우리가 다른 단어로 장미라고 부르는 것은 달콤한 냄새가납니다.
Caleb

3
Gandalf 지점이 단위 테스트 프레임 워크의 코드 이름이 아니길 바랍니다. 그것을 통과하는 것은 통과하지 않아야합니다!
corsiKa

답변:


25

애매 모호하지 않고 특성이 변경 될 수 있도록 사람들을 충분히 자세하게 나열하는 데 하루 종일 걸리는 특성으로 사람들을 참조하지 않습니다. 그들이 이발을하면 어떻게 되나요? 대신 우리는 그들에게 이름을 부여합니다. 또한 사람들은 임의의 기호 스트림보다 단어를 기억하는 것이 좋습니다.

면책 조항 : 질문으로 인해 의견과 일화가 포함되어 있습니다.

몇 년 전에 일했던 곳에서 우리의 모든 서버는 달과 신체 부위의 이름을 따서 명명되었습니다. "레아", "미란다", "폐", "신장"등

위로 당신과 같이, 이것은 모두 바보 같으며 우리는 그것들을 "arc-sql-w-4"또는 "lon-web-lin-2"와 같은 더 "설명적인"이름으로 변경해야한다고 결정했습니다. 이것은 많은 반대에 부딪쳤다. 그러나 통과했다. 우리는 모든 것을 이름을 바꿨습니다.

그래서 무엇이 잘못 되었습니까?

이전에는 "마음"으로 제어되는 "헤드"를 기억할 수 있거나 "Tarvos"가 X 용 애플리케이션 서버라는 것을 기억할 수 있었기 때문에 어떤 머신이 기본 데이터베이스이고 어떤 머신이 슬레이브인지를 알 수있었습니다. 이제 우리는 찾고 있던 기계를 부분적으로 설명했지만 완전히 설명하지 않은 불분명 한 기호 더미를 기억해야했습니다. "lon-web-lin-1"은 제품 A의 응용 프로그램 서버이고 "lon-web-lin-2"는 제품 B에 대한 검색 테이블을 통해 알아야했습니다.

FartDownTrousersForALivingDoYou와 같은 암호를 사용해야하는 이유와 비슷합니다. 43gH5 # € 1 대신에. 사람들은 임의의 쓰레기 더미가 아니라 단어를 기억하는 데 능숙합니다. 단어는 사물을 나타내는 기호입니다.

또 다른 (아마도 더 실용적인) 문제는 DNS와 서버 이름을 해당 기능에 연결한다는 것입니다. 즉, 이름을 변경하지 않고 기능을 변경할 수 없습니다. 우리에게는 물리적 위치와 운영 체제도 포함되었습니다. 그것은 arse에 엄청난 고통입니다.

또한 이것이 마지막 요점입니다. 이름이 훨씬 더 재미있다.

프로젝트 이름은 어떻습니까?

"프로젝트 간달프"대신에 당신은 무엇을 제안합니까? "프로토 타입 함수 X를 프로젝트하고이를 제품으로 발전시킬 수 있는지 확인하십시오"? 프로젝트 범위가 변경되면 프로젝트 이름을 변경합니까? 다시 말하지만, 이름은 사물을 나타내는 속기 기호입니다.


5
설명이 아닌 상형 문자에 대한 설명 은유를 변경 한 것 같습니다. 어떤 제품이 어떤 서버에서 실행되는지 명확하게하는 이름 지정 패턴을 시행해야합니다. 그것이 "설명 적"인 것에 관한 것입니다;)
back2dos

9
@ back2dos-새 응용 프로그램이 서버에 배포되거나 기존 응용 프로그램이 다른 서버로 이동하면 영향을받는 모든 서버의 이름이 바뀝니 까? 코드 이름을 사용하지 않기 때문에 제품 A의 이름이 바뀌면 어떻습니까? 해당 이름이 클라이언트에 저장된 모든 곳에서 변경 하시겠습니까? 또는 변경 범위를 최소화하기 위해 잘못된 DNS 별칭을 그대로 두시겠습니까?
저스틴 동굴

5
@ back2dos-새 앱을 배포 할 때마다 서버 이름을 바꾸고 모든 클라이언트를 업데이트하면 꽤 빨리 고통스러워집니다. 10 번째 앱을 특정 서버에 배포하면 어떻게됩니까? 특정 서버 이름에 대한 참조가있는 수백 개의 클라이언트 시스템이있는 경우 어떻게됩니까? db3.todoapp서버 만 처리 할 경우보다 유익합니다 todoapp. 마케팅 부서에서 "Organizer Pro"라는 앱을 호출하기로 결정하고 서버에 8 개의 다른 앱이있는 경우 이름 관리가 매우 복잡해집니다.
저스틴 케이브

4
또한 기계에 둘 이상의 기능이 있으면 어떻게됩니까? 이름이 관리하기 어려워 지거나 정확하게 설명하지 못합니다.

3
back2dos에 동의하지 않는 것은 어렵습니다. "비 설명 상형 문자"는 예제를 읽을 때 정확히 생각한 것입니다. 역할정체성 back2dos 의 구별은 특히 관련이 있습니다. 회사에서 서버의 역할에 따라 서버 이름이 지정되고 "http-blog-db-failover"와 같은 이름이 "Hermione"보다 훨씬 더 명확 해 보이고 MongoDB에서 CouchDB 또는 마케팅에서 블로그를 호스팅하는 웹 사이트의 상용 이름을 변경하기로 결정한 경우.
Arseni Mourzenko

10

그들의 속성으로 물건을 명명하는 것은 근본적으로 나쁜 생각입니다. 그 이유는 속성 은 정의에 따라 변경 가능한 현상이며 속성이 변경 되더라도 사물 의 신원 은 동일하게 유지되기 때문입니다.

누군가 파일 서버를 Linux로 마이그레이션해야한다고 결정 했습니까? 이름이 "Apollo"인 경우 문제가되지 않습니다. 이름이 "windows"를 참조하면 오해의 소지가 있거나 많은 비용이나 위험으로 어디에서나 변경해야합니다. 새로운 출력 형식을 도입하고 있습니까? 하나님의 사랑을 위해 'newFormat'이라고 부르지 마십시오! 그것은 결국 다시 대체 될 것이며 , 심지어 더 새로운 형식은 그것을 구별하기 위해 더 설명적인 이름이 필요할 것이다. '3'이라고 부르면 나중에 '4'또는 '골드'로 승격하여 '플래티넘'으로 업그레이드 할 수 있습니다.

(추가 정보는 너겟 정보로 구성된 이름이 맞지 않기 때문입니다. 아무도 "PC-Marketing-Windows7-143"이라는 컴퓨터에서 작업하기를 원하지 않습니다. "Apollo"또는 "Bacchus"를 그러나 요점은 정체성 / 재산 분할입니다.)


5
설명이 포함 된 이름은 속성이 아니라 목적을 나타 냅니다. 출력 Hermes을 표시하는 함수를 호출하면 예보다 더 잘 인식 functionWithTenLinesOfCode됩니다. 개인적으로, 나는 그것을 부를 것 print입니다.
back2dos

@ back2dos OP가 제공하는 예제는print_left_aligned_to_CRT_monitor()
Izkata가

@Izkata : 당신은 인정해야합니다 Cathy(). 참고 : 개인적으로 Guns & Roses 가사를 인용하는 기능 및 변수 이름을 가진 생산 코드를 보았고 Buffy를 참조하는 가변 및 기능 이름을 가진 생산 코드를 작성하는 것은 유죄입니다.
slebetman

10

내 경험에는 세 가지 이유가 있습니다.

  1. 비슷한 것들을 많이 지정해야 할 때, 그것들 모두에 대해 독특한 설명 적 이름을 찾기가 어려울 수 있습니다. 사람들은 그것을 언급하는 짧은 독특한 방법이 필요하며, 숫자를 사용하는 것보다 이름을 사용하는 것이 좋습니다 (숫자가 매우 짧은 경우가 아니라면). 이름을 지정할 때, 그것은 당신의 마음 속에 개성을 나타내는 경향이 있으므로, 서버 간달프는 SERWIN15AB23보다 색다른 전원 커넥터를 가진 서버라는 것을 기억할 것입니다. 또한 두 가지를 오타와 혼동하지 않을 것입니다.

  2. 이름 지정 프로세스는 재미있을 수 있습니다. 일부 회사는 투표로 그것을합니다. 다른 사람들은 독특한 이름으로 올라 오는 것을 좋아합니다. 부모에게 물어보십시오.

  3. 외부 프로젝트의 경우 일반적으로 이름이 무엇인지 결정하는 마케팅이며 일반적으로 배송 직전에 이름을 지정합니다. Microsoft는 언제 최신 OS를 "Windows 10"이라고 결정 했습니까? 나는 그것이 항상 그렇게 불렀는지 의심합니다. 그 프로젝트는 그 전에 오랫동안 개발되어 왔을 수도 있으며, 어떤 경우에는 회사 외부 사람들이 당신이 무슨 말을하는지 알 수 없도록 난독 처리하기를 원할 수도 있습니다.


5
또한 해당 작업에 맞게 이름을 조정할 수 있다고 덧붙일 가치가 있습니다. 간달프는 "매직이 일어나는 곳"의 빌드 서버 일 수도 있고, Cerberus는 방화벽 일 수도 있고, Hephaestus는 dev 서버 일 수도 있습니다. 숫자를 함수와 연관시키기는 매우 어렵습니다
Liath

1
그런데 "Windows 10"의 내부 이름은 실제로 "Windows NT 6.4"입니다. 그러나 마케팅은 6.0 "일명"Vista "가 운영 체제 커널이 주요 재 설계된 마지막 버전임을 인정하지 않습니다.
Philipp

@Philipp은 Windows 7 시스템의 명령 행에 "ver"를 입력합니다-6.1 (항상 농담이었던 Vista SP1). Windows 8이 내 머리 꼭대기에 있는지 확실하지 않습니다.
Liath

Windows 8.1 Pro (이 PC에 업데이트 1이없는 것 같습니다) :
6.3.9600

@Philipp AFAIK는 이전 버전과의 호환성을 위해 수행되었으며 커널이 얼마나 많이 변경되었는지 반영하지 않습니다.
svick

6

설명적인 이름 지정은 hard ™이며, 사용할 수있는 단어 목록이 자동으로 제공되는 테마가 이미 있으면 훨씬 쉽습니다.

당신이 그들을 이름 같은 개체의 여러있을 때 foo1.6, foo1.2등, 신속하게 혼란 / 실수하는 경향이 가져옵니다. 예를 들어 테스트를 실행해야 할 Virgo경우 실수를하게되면 실수를 바로 알게됩니다 Cancer.

또한 이름 지정 규칙이 시작되고 음악 장르에 따라 회의실 이름을 기반으로 결정하고 식당 이름을 결정할 때 재미있는 회의를 할 수 있습니다 Salsa.


1
Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.매우 사실입니다. 그러나 그것이 더 쉽다고해서 그것이 장기적으로 좋다는 것을 의미하지는 않습니다. 당신이 말하는 것은 적절한 API 디자인을하지 않는 것과는 다른 것입니다. 기능을 포기하는 것이 훨씬 쉽기 때문입니다.
back2dos 12

4

높은 문맥 또는 낮은 문맥 문화 와 관련이있을 수 있습니다 . 모든 회사, 조직 또는 팀에는 고유 한 문화가 있습니다. 문맥 문화의 높음 또는 낮음은 문화가 명시 적으로 관련시키기를 원하는 정보의 양과 사람들이 문맥에서 얼마나 많은 정보를 얻을 수 있는지를 의미합니다.

문화 참조의 이름으로 모든 서비스의 이름을 지정하면 약간의 유연성이 제공되지만 명시 성이 부족합니다. 이름, 즉 서비스의 맥락을 보충하는 입소문 또는 "부족 지식"이 있어야합니다. 예를 들어, "fizzbuzz"서버 나 "marcopolo"서비스가 아무도 모르는 상황을 보았지만 트래픽을 얻었으므로 무언가를해야합니다.

저는 문맥이 약한 사람이므로 서버 나 서비스의 목적에 대한 문맥 을 제공 하는 단순하고 명확한 이름을 선택하는 경향이 있습니다 . 또한 "자가 문서화 코드 (self-documenting code)"를 작성하여 코드를 더 읽기 쉽게 만들기 위해 이름을 지정하는 데주의를 기울입니다.

그러나 나는 현재 모든 서비스가 Transfomers의 이름을 딴 문맥이 많은 상점에서 일하고 있습니다. 한숨. 최소한 그들은 그 이름을 일관되게 사용합니다.

따라서 문화적 가치와 비슷해 보이지만 기술 관행은 문화적 선호에 적응할 것입니다.

문맥이 높으면 더 재미있을 수 있으며 그 가치가 있습니다.


3

코드 명에 대한 한 가지 이유는 난독 화입니다. 프로젝트 이름을 무의미하게 만들면 다른 사람이 논의중인 내용을 이해하지 않고도 공개적으로 이야기 할 수 있습니다.

마찬가지로, 서버에 무의미한 이름을 지정하면 권한이 부여 된 사용자를 제외하고 아무도 서버에 무엇이 있는지 알 수 없습니다.


2

중요한 질문은 무엇입니까? 다른 답변은 설명 적이 지 않은 것을 설명하는 훌륭한 일을 해냈습니다.

서술은 그들의 역할목적 에 따라 사물을 부르는 것에서 시작된다는 것을 확립합시다 . 으로 그들이 무엇 . 예를 들어, "커터"가하는 일은 매우 분명합니다. 이제 도끼, 레이저 또는 칼이 될 수 있습니다. 그다지 중요하지 않습니다. 또한 레이저는 "포인터"일 수도 있고 도끼는 "장식 자"일 수도 있고 나이프도 "펑처"일 수도 있습니다.

따라서 다른 사람들이 지적했듯이, 무언가의 속성과 그것이 수행하는 작업 사이의 관계는 비교적 느슨합니다. 따라서 OS 서버 이름의 일부가되는 것은 아니다 설명 이되고, 산만 진정한 목적에서.

컴포넌트가 X를 달성 하는 방법 을 연구하는 것이 당신의 일이 아니라면 DoesX, 그것은 당신의 사업이 아닙니다. 그것이 직업이라면 어쨌든 즉시 직면하게됩니다.

Rachet 괴물이 지적했듯이 때로는 설명적인 이름을 찾기가 어렵습니다. 그러나 그보다 더 자주 , 그것은 당신이 무엇을하는지 이해하지 못했음을 나타내며 , 당신은 이름을 지정해야합니다. 그 이해를하기 전에, 당신이 모르는 것을 어떻게하는지에 대해 걱정하지 않아야합니다.)


+1이지만 예제를 추가하는 것은 어떻습니까? 당신은 질문 (주석 때 내가 사용했던 예를 사용할 수 없다 http-blog-db-failover이름에 영향을 미치지 않습니다 리눅스에서 윈도우 또는 MongoDB의에서 CouchDB를 이동, 어느 쪽도 마케팅 의사 결정을 할; 블로그를 호스팅하는 웹 사이트의 장애 복구 데이터베이스를 호스팅하는 기계를. )
Arseni Mourzenko

2

첫 번째 이유는 짧고 기억에 남을 수 있기 때문입니다. 프로젝트의 이름을 몇 번이나 말하거나 쓰려고하는지 생각한다면, 모든 사람이 알고 이해하는 짧은 이름이 있으면 상당한 시간을 절약 할 수 있습니다.

두 번째 이유는 동지애를 쌓기 때문입니다. 팀이 이름을 선택하면 모두 좋아하는 이름을 선택할 수 있습니다. 미묘하지만 'Q3 계정 업데이트'라는 프로젝트 대신 Viper 또는 Gimley 또는 Boba 또는 Bugatti라는 프로젝트에서 작업 할 때 팀 사기를 높입니다. 나는 많은 자동차 애호가와 팀에서 일한 친구가 있었다. 그들이 가장 좋아하는 프로젝트 시작 의식은 프로젝트 코드 이름으로 사용할 자동차를 선택하는 것이 었습니다.


2

나는 항상 이것이 사람들을 즐겁게하기 때문에 이루어지는 것이라고 생각했습니다. 사람들은 미디어에 의해 어두운 곳에서 날아 다니는 것에 비해 가치를 부여합니다. 5 세 때 우리는 "특수 요원 오소"가 있습니다; 15 세에 제임스 본드입니다. 비밀은 사람들의 일상적인 활동 (예 : 컴퓨터 프로그래밍)에 중요한 공기를 빌려줍니다.

이와 관련하여 누군가가 "Longhorn"로고를 Microsoft 코드 명 ( http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg )으로 만들었습니다 . 누군가 마케팅 노력의 일환이 아닌 코드 명 로고를 작성하는 이유는 무엇입니까? 다시 말하지만, 사람들은 이런 종류의 일을 즐겁게합니다. 실제 작업을 수행하는 것보다 Photoshop에서 놀리는 것이 더 쉽고 재미 있습니다.


1

당신이 모르는 시스템이있을 수 있습니다.
한 회사에서 모든 서버의 노벨상 수상자 이름을 사용했습니다. 다른 노벨상은 다른 범주의 서버를 나타냅니다.
테스트 서버의 이름은 수학 수상자, 데이터베이스 수상자 후의 데이터베이스 서버, 약 수상자 후의 메일 서버 등
의 이름이 될 수 있습니다. 명명 규칙에 익숙하지 않은 사람에게는 이름이 완전히 무작위로 표시됩니다 (특히 대부분의 사람들이 모든 것을 알지 못하므로) 수십 년 동안 수백 명의 노벨상 수상자).

나는 집에서 비슷한 시스템을 사용하여 제트 전투기 후 컴퓨터, 폭격기 후 서버, 화산 후 디스크 볼륨을 명명했습니다.

소프트웨어 조각, 나무 다음의 프로덕션 버전, 꽃 다음의 베타 버전 등도 마찬가지입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.