태그 보관물: readability

readability

예약어를 피하기위한 의도적 인 맞춤법 오류 본다 : klass나

나는 종종 더 나쁘게 예약어가 된 일반적인 단어의 의도적 인 철자가 틀린 코드를 본다 :

  • klassclazz에 대한 클래스 :Class clazz = ThisClass.class
  • kountSQL 에서 카운트 :count(*) AS kount

개인적으로 나는 이것이 가독성을 줄입니다. 내 자신의 연습에서 나는 더 좋은 이름이 사용되지 않았을 수 있습니다 너무 많은 경우를 발견하지 않았습니다 – itemClassrecordTotal.

JavaDocs for Class 의 예제 는이를 매개 변수에 표시합니다.

 public <U> Class<? extends U> asSubclass(Class<U> clazz)

이것이 합리적인 사용 사례를 보여줍니까?



답변

IMHO, 이것은 매우 나쁜 생각입니다. 예약어는 어떤 이유로 예약되어 있으며 이렇게하면 가독성이 떨어집니다.

나는 또한 두 번째 요점에 전적으로 동의합니다. 변수 이름을 class지정할 수는 있지만 변수 이름을 지정하는 것만 큼 tmp또는 이름을 지정하는 것만 큼 나쁩니다 a. 어떤 수업? 무엇의 수업? 이름은 설명 적이어야합니다.


답변

파이썬 스타일 가이드 는이 문제를 구체적으로 설명하며 다음과 같이 제안합니다.

공개 속성 이름이 예약 키워드와 충돌하는 경우 속성 이름에 단일 밑줄을 추가하십시오. 약어 또는 손상된 철자보다 선호됩니다.

이것은 특정 언어의 의미와 충돌하지 않는다는 가정하에 꽤 좋은 규칙처럼 보입니다.


답변

코드 냄새.

string stringVariable = "";

위의 코드는 의도 된 변수에 대해 아무 것도 알려주지 않습니다.

class Klass

같은 문제

string UserNameString = "bmackey"

위의 코드는 변수 이름에 키워드 문자열을 추가하지 않아도됩니다. 변수 이름으로 유형을 식별해야하는 경우 코드가 너무 깁니다. 밀도 리 팩터.


답변

개인적으로, 이것이 귀하의 코드 스타일에 완벽하게 유효한 옵션이라고 생각합니다.

그것들은 예약어이므로 컴파일러는 언어 역학이나 변수를 의미하는지 여부를 결정할 필요가 없습니다. 이를 염두에두면 사람들이 예약어와 같은 변수가 필요할 것으로 기대 합니다.

JDK 1.6 R21에 번들로 제공되는 소스를 살펴보면 917 번의 “clazz”가 발견됩니다. 분명히, 그들은 그것이 수용 가능한 스타일이라고 생각했습니다.

당신의 팀은 그것에 대해 어떻게 생각합니까? 그것이 나쁘다고 생각하지만 팀의 다른 9 명이 좋다고 생각하면 총알을 물고 받아 들여야합니다. 옳고 그름에 대한 의사 소통이 있고보고있는 문제를보고있는 한 문제가되지 않습니다.

귀하의 팀이 코드 스타일에 대해 어떻게 생각하는지가 제 의견이나 다른 사람의 의견보다 중요 합니다. 이것과 다른 코드 스타일 결정에 적용됩니다.


답변

예약어를 피하기위한 의도적 인 맞춤법 오류는 나쁜 생각입니다.

  • 맞춤법이 틀린 철자와 올바른 철자를 구별하기 어렵 기 때문에 코드를 읽기가 어렵습니다.

  • 맞춤법이 틀린 단어는 기억하기 어렵 기 때문에 일부 일관성없는 맞춤법 오류가 코드 내에서 경쟁하기 때문에 코드를 작성하기 어렵고 읽기가 더 어려워집니다.

  • 예약어는 문제 자체가 아니라 문제를 해결하는 데 사용되는 언어를 나타냅니다. 변수 이름은 문제와 관련된 개념을 가리켜 야합니다.

그것은 대안을 설명하는 이름을 선택하는 것이 더 나은 또는 더 만족 대안이 존재하지 않는 경우에 자격 에서와 예약어 :

public static Method findBenchmarkMethod(BenchmarkRecord benchmark) {
    Class<?> benchmarkedClass = ClassUtils.loadClass(benchmark.generatedClass());
    return findBenchmarkMethod(benchmarkedClass, benchmark.generatedMethod());
}


답변

Class clazz“나는 좋은 이름을 내놓으려고하지 않았다”는 냄새가 난다. 변수는 항상 무언가를 나타내며 좋은 이름은 그것을 나타냅니다. clazz예를 들어 어떤 상황에서도 가능한 최고의 이름 이라고 생각하지 않습니다 . 클래스-> class_reference에 대한 참조입니까, 클래스 객체의 복사본입니다-> class_copy 등. 아마도 “class”를 삭제하고 설명적인 단어를 사용하십시오.

java.lang.SecurityManager.checkMemberAccess(Class<?> clazz, int which)
Parameters
    clazz -- the class that reflection is to be performed on.

여기서 clazz는 검사를 수행 할 대상 클래스이므로

checkMemberAccess(Class<?> target, int which)

clazz보다 매개 변수가 사용되는 것을 훨씬 더 잘 설명합니다.


답변

변수에 예약 된 이름을 사용하면 이름이 잘못 지정된 변수입니다. 강의실 소프트웨어 용 클래스와 같이 합법적 인 이름 인 경우에도 마찬가지입니다.

잘못 명명 된 변수는 잘못 생각했거나 우연한 코드의 표시입니다. 유지 관리하는 소프트웨어에 다른 문제가있을 경우주의하십시오.