Pojo 클래스의 "IS"변수 getter/setter에 대한 올바른 구문은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1118261

  •  12-09-2019
  •  | 
  •  

문제

클래스에 "blah"라는 변수가 포함 된 경우 표준 getter/setter syntax는 분명히 getblah () 및 setblah ()입니다. 그러나 Isblah라는 변수가있는 pojo 클래스가 있다면 다음을 사용하겠습니다.

public type getIsBlah() {
  return isBlah;
}

public setIsBlah(type isBlah) {
  this.isBlah = isBlah;
}

아니면이게 될까요?

public type isBlah() {
  return isBlah;
}

public setBlah(type blah) {
  this.isBlah = blah;
}

첫 번째는 Pojo 컨벤션에 더 엄격하게 일치하는 것처럼 보이지만 두 번째 유형은 Class 'getter/setters를 만들도록 요청하면 Intellij가 생성하는 것입니다. 그렇다면 선호하는 구문은 무엇입니까?

도움이 되었습니까?

해결책

속성을 사용하는 한 가지 이유는 API를 구현에서 분리하는 것입니다. 다시 말해, 개인 변수가 호출되는 내용에 묶이지 않아야합니다. 코드 관리자에게 읽을 수 있도록하려는 것 이상으로 명명을 알리지 않아야합니다.

"타입"이라면 말할 것입니다 boolean 이 경우 두 번째 양식이 정확합니다. 그렇다면 ~ 아니다 boolean, 당신은 사용해야합니다 getXXX -하지만 아마 사용하지 않을 것입니다 getIsXXX. 나에게 "is"는 부울 속성과 매우 강력한 서신을 가지고 있으며, 다른 맥락에서 그것을 사용하면 Javabeans 컨벤션 (다른 도구에 영향을 줄 수 있음)을 깨뜨릴뿐만 아니라 IMO를 오도 할 수 있습니다.

다른 팁

필드의 이름은 Javabean 사양. getter/setter의 이름 만 관련이 있습니다.

일반적으로 게터의 이름은입니다 get<PropertyName>(). 만 boolean 속성입니다 is<PropertyName>() 대안으로 허용됩니다.

당신의 예에서 당신이 getter를 호출 할 때 Bean 속성 이름은 "blah"입니다. isBlah() 그리고 당신이 당신의 getter를 부를 때 그것은 "Isblah"입니다. getIsBlah().

개인적으로 나는 보통 선호합니다 isBlah().

Pojos에 대한 강력한 협약이 있다고 말하지는 않지만 Javabeans 두 번째 (Intellij) 예제는 부울 속성의 표준이며 다른 모든 것은 getX.

JSTL을 사용하는 경우 "IS"구문에는 한 가지 큰 문제가 있습니다. JSTL EL이 인식하지 못한다는 것입니다. 꽤 바보이지만 JSTL EL의 디자이너는 Javabeans 규정 준수에 대한 논리를 확인하지 않았습니다.

나는 종종 view-rayer 클래스에서 getisblah () 메소드를 작성하는 것을 발견합니다. 끔찍합니다.

두 번째 옵션도 선택하겠습니다. 첫 번째 getIsBlah() 말이 많고 중복되는 것 같습니다.

"get"과 "is"는 실제로 Javabeans 컨벤션에 따라 기술적으로 여전히 허용되기 때문에 괜찮습니다. 나는 당신의 "blah"가 실제로 어떤 단어인지에 따라 더 나은 소리 또는 더 자연스러운 소리를 낼 것입니다.

JSTL은 콩 사양에 따라 부울이나 다른 물체가 아닌 부울 인 경우 ISMYBool 만 허용합니다. (원시 대 객체).

이는 JAXB가 잘못된 코드를 생성 함을 의미합니다. 그것은 생성합니다 Boolean 속성은 무효가되어야하지만 여전히 getters의 이름을 지정합니다. isXXX(), Bean 사양을 위반합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top