한 프로그래머, 여러 언어 — 이름 딜레마


14

여러 프로그래밍 언어에서 작업 할 때 문제가 발생합니다 ...

한 언어의 유효한 이름 (식별자)이 다른 언어에서는 유효하지 않습니다. 예를 들어 ...

var new function thisJavaScript의 키워드이지만 Python에서 자유롭게 사용할 수 있습니다. 마찬가지로 list dict def문제없이 JavaScript에서 사용할 수 있습니다.

이것은 매우 일반적이며 프로그래머가 일반적으로 여러 언어로 프로그래밍 할 때 빠르게 익숙해집니다.

그러나 공동 작업을 수행 할 때는 팀 구성원이 코드의 일관성과 균일 성을 보장하기위한 규칙 / 지침을 마련해야합니다. 팀의 경우이 문제는 단순히 프로그래밍하는 동안 무엇이 유효하고 무엇이 아닌지를 기억하는 것보다 중요합니다.

제 질문은 당신이 어떤 전략을 채택 하느냐입니다.

  • 사용하는 모든 언어로 제공되는 예약어를 모두 조합하여 모든 사람에게 목록을 넘겨주고 사용하지 마십시오.
  • "컨텍스트 전환"시 다양성을 받아들이고 추가 고통
  • 한 언어가 다른 언어를 사용할 수 있지만 그 반대의 언어는 사용할 수없는 중간 근거를 채택하십시오

(참고 :이 질문에서 Python과 JavaScript에 대해서만 이야기하고 있지만 ... 더 광범위하게 질문에 대답하십시오)

-업데이트-

모든 답변에 감사드립니다. 따라서 내가 떠오르는 일반적인 의견은 프로그래머가 다른 언어를 사용하는 것과 상관없이 프로그래머가 어떤 이름이든 사용할 수있게하는 것입니다. 이름이 설명적인 한 아프지 않습니다.


1
또는 모든 변수 이름이로 시작해야합니다 $. PHP, JavaScript 및 일부 C / C ++ 컴파일러에서 작동 합니다. 진지하게, 이것은 PHP가 IMHO를 올바르게 얻은 것입니다.
Joey Adams

답변:


46

30 년이 넘는 경험을 통해 몇 가지 언어로 프로그래밍을 해본 결과, 모든 언어에서 작동하는 명명 표준을 찾으려고 노력하는 것이 아마도 하늘 아이디어의 핵심이라고 할 수 있습니다.

내 경험 초반에 C에서 #define 매크로를 사용하여 C 코드를 이전에 사용했던 Pascal 코드처럼 보이게 만들려고했습니다. 파스칼 프로그래밍에 익숙해서 C를 파스칼처럼 작동시킬 수 있다면 생산성이 높아질 것이라고 생각했습니다. 나는 곧 내가 틀렸다는 것을 발견했다.

보다 생산적인 것은 C를 배우고 파스칼 구문을 다른 언어로 활용하려고하지 않는 것이 었습니다.

사용중인 다른 언어로 잘못하는 것 때문에 프로그래머가 한 언어로 무언가를하지 못하게하여 잠재적으로 프로그래머를 구속 할 것이라고 생각합니다.

이름 지정 규칙을 변수 사용을 설명하는 데 적합한 것으로 제한하면 어떤 언어로든 좋은 코드를 만들 수 있습니다.


3
의미가있는 이름이 필요한 모든 이유입니다.
JeffO

24

"언어", "신규", "var", "this"라는 용어는 어떤 언어로도 충분히 설명하기 어렵 기 때문에 처음부터 이름을 지정해서는 안됩니다.


2
"기능". 키워드가 아닌 경우에는 의미가 없습니다.
MPelletier

11

예를 들어 자바 스크립트에서 파이썬으로 전환하는 것은 이미 컨텍스트 전환입니다. 변수 이름이 바뀌면, 특히 이름 변경이 언어와 관용적 인 경우 나쁘지 않다고 생각합니다. 이 경우 더 어려운 컨텍스트 스위치가 도움이 될 수 있다고 주장 할 수도 있습니다. "친구, 지금 파이썬이 아닌 자바 스크립트를 작성하고 있습니다."


7

설명 변수 이름을 사용하는 경우 설명하는 문제가 최소화되어야한다고 생각합니다. 그럼에도 불구하고, 그것이 최소라면, 언어들 사이의 변수 명명으로 인한 컨텍스트 이동을 수용하는 것도 최소화됩니다.


5

대부분의 예약어는 (모든 언어로) 매우 일반적입니다. 나는 더 설명적인 변수 / 함수 이름을 선호하며 이는 거의이 문제가 발생하지 않음을 의미합니다. 찰스 시몬이 (Charles Simonyi)가 원래 명명 체계로 감염된 것을 인정해야합니다. 이것은 70 년대 후반의 제록스 (Xerox)에서 헝가리 표기법 (Hungarian Notation)으로 불리기도했습니다. 예약어로 사용합니다.


5

이것이 가상의 문제 가 아니라 실제 문제임 을 발견 할 때까지 가이드 라인 작성에 시간을 낭비해서는 안됩니다 .

이것이 어디에서 문제가 될 수 있는지 생각할 수있는 상황 중 하나는 프로그래밍 언어간에 데이터 구조를 공유 할 때입니다. 예를 들어, 클라이언트 측에 서버 측의 Python 오브젝트에 반영되는 Javascript 오브젝트가 있고 해당 멤버에 대해 동일한 이름을 갖는 것이 당연한 경우입니다. 이 경우 규칙은 간단합니다. 어떤 언어로든 예약어 인 이름을 사용하지 마십시오. 그게 다야. 원한다면 지침에 적으십시오. 이제 더 중요한 작업으로 넘어갑니다.

BTW, list 나 dict는 파이썬에서 예약어입니다. 변수 이름으로도 사용할 수 있지만 꽤 큰 이름은 사용할 수 있습니다.


3

내 경험상, 이것에 대한 해결책은 모든 언어에 적용되는 광범위한 명명 규칙을 갖는 것입니다. JavaScript, C # 또는 다른 펑키 언어이든 변수와 클래스의 이름이 지정되는 방식은 코드베이스 내에서 표준이 될 수 있는데, 이것이 일반적으로이 문제를 해결하는 방법입니다. 이 협약은 모든 사람들의 합의에 의해 합의 될 수 있으며, 단순히 가이드 라인을 원하는 대다수, "이것이 우리가 그렇게하는 방법이다"라고 말하는 경영진 또는 내가 상상할 수있는 몇 가지 다른 가능성에 의해 합의 될 수있다.

내 클래스 또는 변수 이름이 너무 쉽게 충돌하지 않을 정도로 설명하기 때문에 설명하는 식별자 문제는 거의 없습니다. 동시에, 팀이이를 어떻게 처리하기를 원하는지 명확하게하는 것보다 다른 사람과 협력하고 있다면 중요한 점입니다.


2

한 언어에서 다른 언어로 코드를 옮길 계획이 아니라면 이것이 어떻게 문제가 될 수 있는지 알 수 없습니다. 어떤 변수 이름이 유효한지 개인적으로 잊어 버리는 경향이 있다면, 개인적으로 유효한지 확실하지 않으면 변수 이름을 사용하지 마십시오. 그러나 다른 사람들이 잘못된 변수 이름을 사용하면 코드가 컴파일되거나 실행되지 않습니다. 따라서 다른 사람의 코드를 작업하고 있고 'var'이라고 부르는 경우 사용하는 언어에 관계없이 유효한 이름인지 확실하게 알 수 있습니다.

한 언어에서 다른 언어로 코드를 이동하려는 경우 금지 된 이름 목록이 필요할 수 있습니다. 예를 들어, C 코딩 사례 문서에서는 코드를 C ++로 이식하기가 더 어려워 지므로 new 또는 class 를 변수로 사용하는 것을 금지 합니다. 이 경우, 필요한 경우 해당 업무를 용이하게하는 규칙을 설정하는 것이 합리적입니다.


-2

소문자를 선도하는 CamelCase를 고수하십시오. 어디에서나 작동합니다. 이것은 호환되지 않는 시스템 사이에서 가장 낮은 공통 분모를 찾는 것입니다.


5
일부 언어를 제외하고 첫 글자의 경우 구문이 중요합니다.
Karl Bielefeldt

1
... 그리고 그것은 많은 언어로 확립 된 문화 준 표준을 위반합니다.
tdammers

헝가리어 표기법은 훨씬 더 ;-) ... 그 낙타 표기법을 난독있다
지크 Hansell

@ 칼 : 분명히 제안은 언어의 한계에 국한됩니다. Java가 달러 기호로 변수 이름을 시작할 수 있다는 것을 알고 있습니까? PHP처럼 보이는 Java 코드를 보았습니다. 이전 프로그래머가 프로그래밍을 어디서 배웠는지 분명했습니다!
dotancohen

@dotancohen : 파스칼이 방금 장면을 만들던 몇 년 전 취미 잡지에서 파스칼 프로그램을 본 기억이 있습니다. 코드 구조 (및 전역 변수를 사용하여 서브 루틴 및 함수에 값을 전달한다는 사실)에서 프로그램이 내가 파스칼이 쓴 최고의 기본 프로그램 중 하나라는 사실은 눈에 띄게 분명했습니다 . ;-)
Zeke Hansell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.