좋아, 이것은 항상 나를 괴롭힌 작은 것들 중 하나입니다. 나는 일반적으로 식별자를 약어로 사용하지 않으며 짧은 식별자 (예 :)를 사용하는 유일한 시간 i
은 타이트한 루프입니다. 따라서 C ++에서 작업 할 때 자극을 주며 이름을 지정 해야하는 변수가 operator
있거나 class
문제를 해결하거나 약어를 사용해야합니다. 경고 : 도메인 객체가 호스트 언어로 개념을 반영하고 실수로 충돌을 일으킬 수있는 프로그래밍 언어 디자인에서 많은 일을하기 때문에 종종 불균형하게 발생할 수 있습니다.
이 문제를 어떻게 처리 하시겠습니까? 약하다? ( op
) 철자가? ( klass
) 다른 것? ( operator_
)
답변
-
대문자 추가와 같은 이름 지정 규칙을 약간 변경해야 할 수도 있습니다. 모든 후속 코드가 일관되도록 가능한 한 빨리 이것을 받아들이는 것이 좋습니다.
-
더 구체적으로 고려하십시오. 키워드는 상당히 넓은 경향이 있으므로 문제를 해결하고 가독성을 높이기
class
위해 범위를 좁히 십시오demonstrationClass
.
답변
그것은 내가 만난 것이 아니지만 그러한 상황에 처하면 다음 옵션으로 순서대로 해결하려고 시도합니다.
- 동의어를 찾으십시오.
- (특히 변수의 경우) 접두사 또는 접미사를 찾으십시오.
- (특히 수업의 경우) 첫 글자를 대문자로 바꾸고 이름이 경우에만 다르지 않아야하는 코딩 규칙을 잊어 버리십시오. 이 옵션은 키워드와의 충돌이있는 경우에만 사용합니다.
- 약어를 사용하십시오.
답변
언어가 이깁니다. 컴파일러보다 현명하지 못합니다 (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”입니다.