명명 규칙이 언어와 충돌 할 때 무엇을합니까? 할 때 자극을

좋아, 이것은 항상 나를 괴롭힌 작은 것들 중 하나입니다. 나는 일반적으로 식별자를 약어로 사용하지 않으며 짧은 식별자 (예 :)를 사용하는 유일한 시간 i은 타이트한 루프입니다. 따라서 C ++에서 작업 할 때 자극을 주며 이름을 지정 해야하는 변수가 operator있거나 class문제를 해결하거나 약어를 사용해야합니다. 경고 : 도메인 객체가 호스트 언어로 개념을 반영하고 실수로 충돌을 일으킬 수있는 프로그래밍 언어 디자인에서 많은 일을하기 때문에 종종 불균형하게 발생할 수 있습니다.

이 문제를 어떻게 처리 하시겠습니까? 약하다? ( op) 철자가? ( klass) 다른 것? ( operator_)



답변

  1. 대문자 추가와 같은 이름 지정 규칙을 약간 변경해야 할 수도 있습니다. 모든 후속 코드가 일관되도록 가능한 한 빨리 이것을 받아들이는 것이 좋습니다.

  2. 더 구체적으로 고려하십시오. 키워드는 상당히 넓은 경향이 있으므로 문제를 해결하고 가독성을 높이기 class위해 범위를 좁히 십시오 demonstrationClass.


답변

그것은 내가 만난 것이 아니지만 그러한 상황에 처하면 다음 옵션으로 순서대로 해결하려고 시도합니다.

  1. 동의어를 찾으십시오.
  2. (특히 변수의 경우) 접두사 또는 접미사를 찾으십시오.
  3. (특히 수업의 경우) 첫 글자를 대문자로 바꾸고 이름이 경우에만 다르지 않아야하는 코딩 규칙을 잊어 버리십시오. 이 옵션은 키워드와의 충돌이있는 경우에만 사용합니다.
  4. 약어를 사용하십시오.

답변

언어가 이깁니다. 컴파일러보다 현명하지 못합니다 (PL / 1과 같은 혐오를 무시 IF IF = THEN THEN THEN = ELSE ELSE ELSE = IF END하지만 PL / 1은 처음에 질문하지 않습니다). 기본적으로 언어의 규칙을 따라야하며 사용하는 언어의 핵심 단어에 대한 대안을 찾거나 대체 언어를 찾아야합니다.

따라서 매우 이례적인 상황을 제외하고는 그 반대가 아니라 언어에 적응합니다.


답변

연장하는 방법을 약식으로 사용하는 대신? Foo 언어로 클래스 구성을 구현하는 경우 FooClass 및 foo_class를 사용하는 것은 어떻습니까? (케이싱 기본 설정이 무엇이든 Modulo).


답변

class빈도에 따라 내가 사용한 약어 중 일부 :

  • cls
  • clss
  • clazz
  • theClass
  • aClass

Class인스턴스가 나타내는 클래스를 알고 있다면 변수 이름에 포함시킬 수 있습니다.

  • stringClass = Class.forName("java.lang.String");

답변

C 및 C ++에서 키워드는 모두 소문자이고 언어는 대소 문자를 구분하므로 Shift 키를 누를 때마다 많은 문제가 사라집니다.

모듈라 2에서, 키워드는 모두 대문자입니다 -하지만 너무 오래 당신의 식별자가 가지고있는 개의 소문자의 차이는 분명 불가능 충돌한다.

또한 절대적으로 명명 규칙은 어느 정도 사용중인 언어의 일반적인 규칙을 반영해야하므로 C ++로 “My_Class”를 쓸 가능성이 높은 Java로 “myClass”를 작성해야합니다.

기본적으로 컴파일러를 작성하는 것이 아니라 사람들이 읽을 수있는 것으로 판단하는 것은 상황 및 관련 기대치에 따라 다릅니다.


답변

나는 종종 이것에 부딪치지 않지만, 델파이를 사용하기 때문에 문제가 아닌 경향이 있으며 식별자 앞에 &를 붙여서이 문제를 해결할 수 있습니다. 따라서 “class”는 유효한 식별자가 아니지만 “& class”입니다.