Java에서 한 글자 변수의 사용이 권장됩니까? 코드 스 니펫 또는 자습서에서 종종 볼 수 있습니다. 코드를 읽기가 더 어려워 다른 프로그래밍 언어에서 사용되는 것을 보지 못하기 때문에 사용하는 것이 좋습니다.
Java에서 한 글자 변수의 사용이 권장됩니까? 코드 스 니펫 또는 자습서에서 종종 볼 수 있습니다. 코드를 읽기가 더 어려워 다른 프로그래밍 언어에서 사용되는 것을 보지 못하기 때문에 사용하는 것이 좋습니다.
답변:
제대로 이름을 지정하는 것은 어렵습니다. 열심히. 다른 방법으로 보면 올바르게 명명 된 것이 중요하다는 의미로이를 취할 수 있습니다. (그렇지 않으면 이름을 지정하는 데 왜 노력을 기울였습니까?)
그러나 때로는 사물의 이름이 중요 하지 않은 경우가 있습니다. 그렇기 때문에 익명 함수 ( "lambdas")와 같은 것이 있습니다. 때로는 이름을 짓는 것이 가치가 없기 때문입니다.
단일 문자 (또는 매우 짧은) 변수 이름이 적절한 많은 예가 있습니다.
i
, j
, k
, l
루프 인덱스에 대한k
그리고 v
지도에서 키와 값n
숫자 (예 :에서 Math.abs(n)
)a
, b
, c
임의의 개체 (예에서 max(a, b)
)e
일반 for each
루프 의 요소f
고차 함수의 함수p
필터의 술어 함수T
, T1
, T2
, ... 형 변수E
컬렉션의 엘리먼트 타입을 나타내는 타입 변수R
함수의 결과 유형을 나타내는 유형 변수ex
catch
조항 의 예외op
지도 또는 접기 작업s
복수를 나타내는 문자 를 추가하는 것 , 즉 모음 (예 : ns
숫자 모음 xs
및 ys
임의의 2 개의 일반 객체 모음)다른 프로그래밍 언어에서 사용되는 것을 본 적이 없습니다!
하스켈, F #, ML, 루비, 파이썬, 펄, PHP, C #, 자바, 스칼라, 그루비, 부, 네 메르, D, Go, C ++, C, 당신은 이름을지었습니다.
k
와 l
너무 멀리의 루프 인덱스에 (당신이로 시작하는 많은 중첩 루프를하지 말았어야; 기능에 추출물을) . 개인적으로 함수 당 하나 이상의 1 글자 변수를 사용하지는 않지만 0으로 촬영합니다.
l
또는 len
길이 및 위해 사용된다 arr
(예 : 배열에 대해 for(var i=0; l=arr.length; i<l; i++)
). 또한 함수를 참조 할 때 fn
대신에 사용할 수 있습니다 f
.
루프가 아무것도 계산하지 않는 경우
for(int i = 0; i < 10; i++) {
System.out.println("Stop it! I really mean it!!");
}
그렇다면 네가 사용할 수있는 최고의 이름입니다. 더 이상 아무것도 의미를 더 명확하게 만들 수는 없지만 읽는 데 훨씬 오래 걸립니다.
변수가 루프 내 에서 사용 되면 의미있는 이름이 유용 할 수 있습니다.
for(int door = 0; door < 3; door++) {
int reward = gauge(door);
if(reward > max) {
max = reward;
best = door;
}
}
변수가 메소드 전체에서 사용되는 경우 이름이 더 길어야합니다. 클래스 전체에서 사용되는 경우 이름은 완전히 자명 한 것이 더 좋았습니다. 그렇지 않으면 코드의 선명도가 거의 떨어질 것입니다.
간단히 말해서 변수의 범위가 클수록 이름이 길어야합니다.
index
예를 들어 일반적으로 배열을 반복 할 때 명명 된 변수를 사용합니다 .
i
정확하게 정의 된 의미를 가진 적절한 단어, 즉 "너무 걱정할 필요가없는 색인"입니다. 그러나 나는 그것이 친숙한 문제라고 생각합니다. 당신이 하스켈을 많이 읽는다면, 당신은 읽을 익숙해 될 것 m
같은 모나드 , f
로 펑 , x
같은 오브젝트로 , xs
같은 목록 x
의 등등.
i
계산에만 변수를 사용하는 루프에 대해 "최고의 이름"이라고 동의하지 않습니다 . 이 경우 count
변수 이름으로 사용되는 것이 좋습니다. 즉각 이해할 수 있습니다. for (int count = 0; count < 10; count++)
또는 while (count--)
.
킬리안의 대답에서 코드를 읽으면 "루프가 있고 변수가 있으며 int 유형이 있고 이름이 있고 이름이 i이며 0으로 초기화됩니다. .. ". 세 개의 점이 내가 생각조차하지 않는 중요하지 않은 세부 사항을 나타내는 "루프 ..."라고 생각합니다. 프로그래머의 마음에, 그 변수는 실제로 존재하지 않습니다. for (;;) {}처럼 루프를 만드는 것은 입력해야하는 인공물 일뿐입니다.
그 변수가 내 마음 속에 존재하지 않기 때문에 왜 절대적으로 필요한 것 이상의 이름을 주어야합니까?
i
, 그러나 _
명백하게 의미가 변수. 그러나 모든 사람이 Prolog에 익숙하지는 않으며 제거하는 것보다 더 많은 관심을 끌 것입니다.
_
다른 것과 마찬가지로 유효한 식별자 이지만 최근에 루비가 경고를하더라도 사용하지 않는 로컬 변수 _
(또는로 시작 _
)가 "사용하지 않는 로컬 변수"경고를 생성 하지 않는 최근 변경이 있었습니다.
루프 내에서 문자 i, j, k를 색인으로 참조하는 경우 이는 Java 및 기타 프로그래밍 언어에서 일반적입니다. 각 스타일 루프마다를 사용하는 것이 좋습니다.
for(User user: users) {
doSomethingWithTheUser(user);
}
대신에
for(int i=0; i<users.size(); i++) {
doSomethingWithTheUser(users.get(i));
}
Java에서는 해당 스타일의 루핑이 최근에 도입되었습니다. 그렇기 때문에 인덱스를 반복하는 것이 배열이나 목록을 반복하는 가장 일반적인 방법이기 때문에 Java에 대해 더 많이 알 수 있습니다.
n, x 또는 y와 같은 단일 문자가 이미 일반적 일 수있는 수학 함수를 구현할 때와 같이 단일 문자가 적절한 경우가 몇 가지 있습니다. 그러나 일반적으로 변수 이름을 의미있는 이름으로 지정하십시오.