boolean (물음표 없음)을 반환하는 Java 메서드에 대한 명명 규칙
다른 언어의 메서드 / 함수 이름 끝에 물음표를 사용하는 것을 좋아합니다. 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);
이 링크를 게시하고 싶습니다.이 답변을 확인하고 더 많은 자바 스타일 규칙을 찾는 친구들에게 도움이 될 수 있습니다.
항목 14는 특히 관련이 있으며 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내가 다른 어떤 것보다 많이 만난 것입니다. 하지만 현재 상황에서 의미가있는 것이 최선의 선택입니다.
'developer tip' 카테고리의 다른 글
| AngularJS 지시문 요소 메서드 바인딩-TypeError : 'in'연산자를 사용하여 1에서 'functionName'을 검색 할 수 없습니다. (0) | 2020.09.16 |
|---|---|
| 문자열 배열 초기화 옵션 (0) | 2020.09.16 |
| HTML5 : 두 개의 입력이 가능한 슬라이더? (0) | 2020.09.16 |
| Razor로 일반 @helper 메서드를 만들 수 있습니까? (0) | 2020.09.16 |
| Sublime Text, Atom에서 커서 아래의 단어를 선택하는 단축키가 있습니까? (0) | 2020.09.16 |