다른 언어의 메서드 / 함수 이름 끝에 물음표를 사용하는 것을 좋아합니다. Java는 이것을 허용하지 않습니다. 해결 방법으로 Java에서 부울 반환 메서드의 이름을 어떻게 지정할 수 있습니까? 을 사용하여 is
, has
, should
, can
어떤 경우에는 괜찮 방법 사운드의 전면입니다. 그러한 방법의 이름을 지정하는 더 좋은 방법이 있습니까?
예를 들어 createFreshSnapshot?
답변
대회는 이름으로 질문하는 것입니다.
다음은 JDK에서 찾을 수있는 몇 가지 예입니다.
isEmpty()
hasChildren()
이렇게하면 끝에 물음표가있는 것처럼 이름이 읽 힙니다.
컬렉션이 비어 있습니까?
이 노드에 자식이 있습니까?
그리고 나서, true
예를 의미하고 아니오를 false
의미합니다.
또는 주장처럼 읽을 수 있습니다.
컬렉션이 비어 있습니다.
노드에는 자식이 있습니다.
참고 :
때때로 메소드의 이름을 createFreshSnapshot?
. 물음표가 없으면 이름은 스냅 샷이 필요한지 확인하는 대신 메소드가 스냅 샷을 작성해야 함을 의미합니다.
이 경우 실제로 무엇을 요구하는지 다시 생각해야합니다. 이와 같은 isSnapshotExpired
이름은 훨씬 더 나은 이름이며 메서드가 호출 될 때 알려줄 내용을 전달합니다. 이와 같은 패턴을 따르면 부작용없이 더 많은 기능을 순수하게 유지할 수 있습니다.
Java API에서 Google 검색 을 수행 isEmpty()
하면 많은 결과를 얻을 수 있습니다.
답변
클래스가 Java Beans 사양 과 호환되기를 원하면 리플렉션을 사용하는 도구 (예 : JavaBuilders , JGoodies Binding )가 getXXXX()
또는 isXXXX()
메서드 이름으로 부울 게터를 인식 할 수 있습니다 . Java Beans 사양에서 :
8.3.2 부울 속성
또한 부울 속성의 경우 getter 메서드가 패턴과 일치하도록 허용합니다.
public boolean is
< PropertyName >()
;이것은 “<이다 PROPERTYNAME 방법 대신”GET <제공 될 수있다>는 ” PROPERTYNAME >”법, 그것은 “GET <외에 제공 될 수 PROPERTYNAME >”방법. 두 경우 모두 부울 속성에 대해 “is < PropertyName >”메서드가 있으면 “is < PropertyName >”메서드를 사용하여 속성 값을 읽습니다. 부울 속성의 예는 다음과 같습니다.
public boolean isMarsupial(); public void setMarsupial(boolean m);
답변
이 링크를 게시하고 싶습니다.이 답변을 확인하고 더 많은 자바 스타일 규칙을 찾는 친구들에게 더 도움이 될 수 있습니다.
항목 “2.13 은 부울 변수 및 메서드에 사용되어야하는 접두사입니다.” 특히 관련성이 있으며 is 접두사를 제안합니다 .
스타일 가이드는 다음을 제안합니다.
일부 상황에 더 적합한 is 접두사에 대한 몇 가지 대안이 있습니다. 다음은 has , can 및 should 접두사입니다.
boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;
지침을 따르는 경우 적절한 방법이 다음과 같이 명명 될 것이라고 생각합니다.
shouldCreateFreshSnapshot()
답변
실패 할 수있는 메서드, 즉 반환 유형으로 부울을 지정하면 접두사를 사용합니다 try
.
if (tryCreateFreshSnapshot())
{
// ...
}
다른 모든 경우에는 is..
has..
was..
can..
allows..
..
답변
표준은 ‘is’또는 ‘has’를 접두사로 사용하는 것입니다. 예를 들어 isValid
, hasChildren
.
답변
is
내가 다른 어떤 것보다 더 많이 만난 것입니다. 하지만 현재 상황에서 의미가있는 것이 최선의 선택입니다.
답변
이 일반적인 명명 규칙 에 대해 다른 관점을 가리키고 싶습니다 . 예 :
java.util.Set 참조 :boolean add(E e)
근거는 다음과 같습니다.
일부 처리를 수행 한 다음 성공 여부 를 보고 합니다 .
(가) 동안 return
실제로하는 boolean
메소드의 이름을 가리켜 야한다 완료 처리를 대신의 결과 유형 (이 예를 들어, 부울).
귀하의 createFreshSnapshot
예는 다음을 의미하는 것처럼 보이 므로이 관점과 더 관련이있는 것 같습니다. 새 스냅 샷을 만든 다음 만들기 작업이 성공했는지보고하십시오. 이러한 추론을 고려할 때 이름이 createFreshSnapshot
귀하의 상황에 가장 적합한 것 같습니다.