2008-09-14 2 views
22

C#과 Java는 클래스 이름, 메소드 이름, 지역 변수 등에서 거의 모든 문자를 허용합니다. 비 ASCII 문자를 사용하고 편집자 및 분석 도구의 경계를 테스트하고 일부 사람들이 읽거나 미국의 오만함이 유일한 논쟁인가?Java/C#에서 국제 식별자를 사용해야합니까?

답변

29

코드를 작성하는 사람이 누구인지 알지 못하기 때문에, 그리고 빌드/테스트/버그 추적 진행에 사용 된 일부 타사 도구에 문제가있을 수 있기 때문에 나는 영어를 사용합니다. 비 독일어 키보드에 äöüß를 입력하는 것은 단순히 PITA 일 뿐이며, 소프트웨어 개발에 관련된 모든 사람이 영어로 말해야한다고 생각합니다.하지만 어쩌면 비 영어권 화자로서의 나의 오만함 일 수 있습니다.

"미국의 오만"이라고하는 것은 프로그램에서 국제 변수 이름을 사용하는지 여부가 아니라 프로그램에서 "Währung"과 "Wahrung"이 같은 단어라고 생각할 때입니다.

9

전적으로 누가 코드베이스에서 작업하는지에 달려 있습니다.

공통 언어를 공유하는 소수의 개발자 그룹이 있고 언어를 사용하지 않는 사람이 코드 작업을 할 필요가 없다고 계획하지 않은 경우 원하는 문자를 사용하십시오.

다양한 문화 및 언어의 사람들이 코드에 작업해야하는 경우 세계에서 모두에게 공통적 인 공통 분모이므로 영어를 사용하는 것이 가장 좋습니다.

+0

결과 제품이 좋은 것이라면 소수의 사람들이 성장할 것입니다. 결국 언어를 능가하게되었습니다. 나쁜 코드를 작성하는 경우 다른 공통 언어 (본질적으로 사실 임)를 사용하는 것이 좋습니다. –

0

Java/C# 언어 및 해당 라이브러리는 iftoString()과 같은 영어 단어를 기반으로합니다. 개인적으로 코드를 읽는 동안 영어 이외의 언어와 영어 간을 전환하고 싶지 않습니다.

그러나 데이터베이스, UI, 비즈니스 논리 (메타포 포함)가 이미 영어 이외의 언어로되어있는 경우 모든 메소드 이름과 변수를 영어로 변환 할 필요가 없습니다.

2

그것은 따라 달라

  • 팀이 사용하여 ASCII가 필요한 기존 표준을 준수합니까?
  • 모국어를 구사하지 못하는 사람이 코드를 재사용하거나 읽을 수 있습니까?
  • 온라인 도움말을 요청해야하는 상황에서 코드 샘플을 그대로 복사하여 붙여 넣을 수없는 시나리오를 생각해보십시오.
  • 전체 도구 모음이 코드 인코딩을 지원합니까?

위에서 '예'라고 대답 한 경우 ASCII 만 사용하십시오. 그렇지 않은 경우, 귀하의 책임하에 앞으로 나아가십시오.

1

당신이 과거 the other prerequisites을 얻는다면, 당신은 하나의 여분의 (IMHO가 더 중요합니다) 하나가 있습니다 - 기호 입력이 얼마나 어려울 지.

내 일반적인 en-us 키보드에서 문자를 입력하는 유일한 방법은 alt 키를 누른 상태에서 숫자 키패드에서 0227을 누르거나 복사하여 붙여 넣는 것입니다.

이것은 입력하는 과정에서 커다란 장애물이 될 수 있습니다. 당신은 강제로하지 않으면 이런 사소한 것들로 코딩을 늦추고 싶지 않습니다. 국제 키보드를 사용하면이 문제를 해결할 수 있지만 해외 키보드가없는 노트북에서 코드를 작성해야한다면 어떻게됩니까?

7

나는 네이밍 (그리고 그 밖의 다른 코딩에 관한) 규칙을 사용하여 행복하게 지워 버린 개발 팀에서 일 해왔다. 그것을 믿거 나 말거나, ä 's와 ö을 코드에 대처해야하는 것이 나를 사퇴시키는 요인이었습니다. 필자는 핀란드어이지만, 미국 키보드 설정으로 코드를 작성하는 것을 선호합니다. 중괄호와 대괄호는 핀란드어 키보드로 쓰는 것이기 때문에 (오른쪽으로 시도하고 curlies에는 7과 0을 사용합니다).

그래서 나는 아스키 문자를 고수한다고 말합니다.

9

귀하의 비즈니스가 영어가 아닌 사람이고 도메인 기반 디자인에 뭔가가 있다고 생각하는 경우 또 다른 측면이 있습니다. 개발자로서 번역 오버 헤드없이 비즈니스와 동일한 도메인 언어를 어떻게 사용합니까?

영어와 노르웨이어는 물론 다른 언어 간의 번역도 의미합니다. 우리는 엔티티 클래스와 서비스를 위해 비즈니스와 똑같은 단어를 사용해야합니다.

나는 모국어를 포기하고 사용하기가 더 쉬웠다. 이제는 내 코드가 동일한 단어를 사용하므로 내 도메인 전문가와 대화하는 것이 더 쉽습니다. 그리고 얼마 후 헝가리 표기법을 사용하지 않고 코딩하는 데 익숙해 진 것처럼 익숙해집니다.

4

Here's an example 비 ASCII 식별자를 사용했는데, 그리스 문자를 영어 이름으로 바꾸는 것보다 읽기 쉽기 때문에 찾을 수있었습니다. 키보드에 θ 또는 φ가 없어도 (필자는 복사하여 붙여 넣기를 사용했습니다.)

그러나 이들은 모두 로컬 변수입니다. 필자는 비 ASCII 식별자를 공개 인터페이스 밖으로 유지할 것입니다.

+0

귀여운 점, 그것에 대해 생각하지 않았습니다. –

0

개발 팀의 누군가가 ASCII 만 지원하는 SDK를 사용하거나 코드 오픈 소스를 만들고 싶다면 많은 문제가 발생할 수 있으므로 ASCII 문자를 사용합니다. 개인적으로, 비록 당신이 사업을 운영하고 있고 사업을 운영하는 사람이 사업을 확장하기를 원하기 때문에 프로젝트에서 언어를 사용하지 않는 사람을 데려 올 계획이 없다고하더라도 나는 그것을하지 않을 것입니다. ,이 날과 나이에 국경을 초월하는 것을 의미합니다. 제 의견으로는 영어가 영역의 언어라는 것과 다른 언어로 변수의 이름을 지정하더라도 비 ASCII 문자를 프로그래밍에 사용하는 것은 거의 없습니다. UTF8 인 데이터를 처리하는 경우 처리 할 언어까지 남겨 두십시오. iPhone 프로그램 (전화와 서버간에 수많은 사용자 데이터가 포함됨)은 UTF8을 완벽하게 지원하지만 소스 코드에는 UTF8이 없습니다. . 그것은 단지 거의 아무 이득을 위해 벌레의 큰 깡통을 여는 것처럼 보입니다.

0

비 ASCII 문자를 사용하는 데 또 다른 어려움이 있지만 분명하지는 않습니다. 사용할 수있는 문자는 Character.isJavaIdentifierStart(int)Character.isJavaIdentifierPart(int)의 유니 코드로 정의 된 defined입니다. 그러나 유니 코드의 정확한 버전은 java.lang.Character의 설명서에 지정된 버전 Java 플랫폼에 따라 다릅니다.

문자 속성이 한 유니 코드 버전에서 다음 버전으로 약간 바뀌므로 하나의 Java 버전에서만 유효하지만 다음 버전에서는 유효하지 않은 식별자가있을 수 있습니다 (가능성은 거의 없음).