인용 된 텍스트는 다음과 같습니다.
"그러나 이러한 기본값에 의존하는 것은 일반적으로 잘못된 프로그래밍 스타일로 간주됩니다."
냉소적으로 : "일반적으로 그렇게 생각된다"는 것은 종종 저자가 제시된 진술에 대한 권위있는 출처를 찾지 않았다는 것을 말하는 방법입니다.
이 경우 주장은 분명히 의문이다. 증거 : 5 가지 중 5 가지 Java 스타일 가이드는 기본값에 의존해야하는지 또는 의존해야하는지에 대해 아무 말도하지 않습니다.
(샘플링을위한 나의 방법론은 "java 스타일 가이드"에 대한 최초의 5 가지 Google 검색 히트를 살펴 보는 것입니다. 그런 다음 각 문서에서 "기본"을 검색했습니다. 이것은 철저한 분석은 아니지만 내 요점을 밝힙니다. )
확인. Java 코드의 가독성을 실제로 지원합니까?
이것은 논쟁의 여지가 있습니다.
한편, 기본 초기화에 대해 배우지 않은 초보자 Java 프로그래머는 0 또는 null이 어디에서 왔는지에 대해 당황 할 수 있습니다. 그러나 그들이 명시적인 초기화를 찾고 귀찮은 것을 찾지 않는다면, 그것들은 기본 초기화에 대해 알아 내기 위해 튜토리얼이나 책을 읽도록 충분해야합니다. (당신은 희망합니다!)
반면에, 우리는 일반적으로 초보 Java 프로그래머가 프로덕션 코드 기반을 유지할 것으로 기대하지 않습니다. 숙련 된 Java 프로그래머의 경우 중복 초기화는 가독성을 향상시키지 않습니다. (최고의) 소음입니다.
내 생각에, 필드의 중복 초기화로 달성되는 유일한 것은 코드의 미래 독자 에게 초기 값에 대해 생각 했다는 신호를 보내는 것 입니다. @GhostCat이 표현한 것처럼 기본 초기화는 의도를 전달하지 않습니다.
그러나 반대로 그 독자라면 코드 작성자의 생각을 반드시 신뢰할 필요는 없습니다. 따라서이 "신호"의 가치도 의문의 여지가 있습니다.
신뢰성은 어떻습니까?
Java에서는 아무런 차이가 없습니다. JLS 는 필드에 기본 초기화 가 수행 되도록 지정 합니다. 반대로 로컬 변수의 경우 초기화되지 않은 변수를 사용하는 것은 컴파일 오류입니다.
간단히 말해서, 명시 적으로 초기화되지 않은 변수의 런타임 동작은 완전히 예측 가능합니다.
변수가 초기화되지 않을 수있는 C 또는 C ++와 같은 언어에서는 이와 달리 동작이 지정되지 않아 충돌이 발생하고 플랫폼마다 동작이 달라질 수 있습니다. 항상 명시 적으로 변수를 초기화하는 경우가 훨씬 강력합니다.
성능은 어떻습니까?
차이가 없어야합니다. JIT 컴파일러는 중복 초기화와 기본 초기화를 동일하게 취급 할 수 있어야합니다.
private int count = 0;
아무것도하지 않는 코드이고, 아무것도하지 않는 코드는 복잡합니다. java.lang에서 클래스를 가져 오거나로 클래스를 선언하는 것과 같습니다extends Object
.