우리는 FindBugs를 사용하고 매개 변수에 @Nonnull
적절하게 주석을 달기 시작 했으며주기 초기에 버그를 지적하는 것이 좋습니다. 지금까지 우리는 null
Guava 를 사용 하기 위해 이러한 인수를 계속 확인 checkNotNull
했지만 SOAP 요청 null
과 같이 값을 확인하지 않고 값을 가져올 수있는 가장자리에서만 확인하는 것을 선호합니다 null
.
// service layer accessible from outside
public Person createPerson(@CheckForNull String name) {
return new Person(Preconditions.checkNotNull(name));
}
...
// internal constructor accessed only by the service layer
public Person(@Nonnull String name) {
this.name = Preconditions.checkNotNull(name); // remove this check?
}
나는 값 자체를 @Nonnull
차단하지 않는다는 것을 이해 null
합니다.
그러나 FindBugs는 값이 표시되지 않은 필드에서 마크 된 필드로 전송되는 곳을 가리킬 것이므로 전달 된 모든 곳 @Nonnull
에서이 값을 확인하지 않고도 이러한 경우를 잡기 위해 의존 할 수는 없습니다 null
. 시스템? 도구를 신뢰하고 이러한 자세한 검사를 피하고 싶습니까?
결론 :null
아래 의 두 번째 검사 를 제거하는 것이 안전 해 보이지만 나쁜 습관입니까?
이 질문은 아마도 null을 기대하지 않으면 null 검사해야 하지만 @Nonnull
주석 과 관련하여 구체적으로 묻습니다 .
@Nonnull
계약서 사양으로 사용하는 방식과 정확히 같습니다. 계약 뒤에있는 수표를 제거해 왔으며 지금까지 아무런 문제가 없었습니다.