Java 부울 getters "is" vs "are"
Java에서 부울 getter에 대한 표기법은 접두사 "is"를 포함하는 것으로 알고 있습니다.
isEnabled
isStoreOpen
하지만 만약 주제가 복수라면요?즉, 만약 가게가 열려 있는지 아닌, 모든 가게가 열려 있는지 알고 싶다면?
isStoresOpen()
영어로는 말이 안 돼요.
나는 다음과 같은 getters를 쓰고 싶다.
areStoresOpen
areDogsCute
areCatsFuzzy
그게 말이 된다고 생각하지만, 다른 사람들로부터 그냥 참고 주어 동사 합의를 포기하고 사용하라고 들었습니다.isStoresOpen
,isDogsCute
,isCatsFuzzy
.
어쨌든, 복수 과목으로 동작하는 부울 게터는 어떻게 하면 좋을까요?
충분한 영어를 구사하고 Java 표준을 따르는 것은 어떨까요?
**are**StoresOpen()
>가 될 예정 >>isEveryStoreOpen()
**are**CatsCute()
>가 될 예정 >>isEachCatCute()
올바른 단어가 의심될 때 나는 항상 시소러스를 반복하는 것을 좋아한다.
어느 책에서 나온 것인지 기억은 안 나지만 중요한 건 쓰여진 것보다 더 많이 코드가 읽힌다는 거야읽기 쉽게 쓰세요.
이 표기법은 getter-method에 variale 자체가 아닌 "is"를 붙이는 것입니다.
예.
private boolean enabled;
public boolean isEnabled() {
return enabled;
}
그리고.
private boolean storesOpen;
public boolean isStoresOpen() {
return storesOpen;
}
isStoresOpen()은 영어로는 의미가 없습니다.
문법적으로 말이 안 될 수도 있지만, 관례를 따르고 충분히 읽을 수 있을 것 같습니다.
Java Bean 사양은 다음을 사용하도록 되어 있습니다.get
겟터에게 있어서boolean
그 후is
.are
는 비표준이며 표준 Bean 이름을 필요로 하는 어떤 것에도 인식되지 않습니다.
많은 툴이 필요로 하는is
또는get
그리고 아마 알아채지 못할 것이다.are
.
다른 말로 바꿔봐getDogsAreFuzzy()
또는getStoresAreOpen()
호환성이나 규약을 향상시키기 위해서입니다.
영어 코드와 자바 코드 중 어느 것을 사용합니까?
자바 코드를 읽을 때, 나는 구조적인 것을 예상한다.다음 문자로 시작하는 부울 메서드is
좋은 구조입니다.
return 0;
- isEnabled()
라고도 쓸 수 있다getEnabled()
에Java naming conventions
.
- 이름 짓기 규칙을 따르는 것은 좋은 습관일 뿐입니다.사용할 때 도움이 됩니다.Java Beans
.
일반적으로 코드는 가능한 한 쉽게 읽을 수 있어야 합니다.그러면 메서드는 (에 의해 지지되는) 단락처럼 거의 읽힐 수 있습니다.Clean Code
따라서 가능한 한 쉽게 발음/읽을 수 있는 방법에 이름을 붙이고 다음 문법의 규칙을 따르겠습니다.are
최신 IDE에서는 특별히 찾지 않고도 쉽게 방법을 찾을 수 있습니다.get
/is
.
하지만, 쿠마르는 콩에 대해 좋은 의견을 가지고 있다.많은 툴이 필요한 것은get
/is
그렇다면 두 가지 방법을 모두 고려해 보겠습니다.하나는 읽기 쉽고 다른 하나는 도구 사용입니다.
당신의 질문에서 당신은 명시적으로 getters에 대해 묻고 있다.getter는 클래스의 한 인스턴스에 대한 몇 가지 정보를 반환합니다.예를 들어, 클래스가 있습니다.Store
.지금이다,isStoreOpen
getter에 대한 완벽한 방법 이름입니다.
다음으로, 모든 점포가 열려 있는지 확인하는 방법을 언급합니다.이 메서드는 하나의 인스턴스에 대한 정보를 반환하는 것이 아니라 전체 인스턴스에 대한 정보를 반환하기 때문에 getter가 전혀 아닙니다.물론 수업이 없다면Stores
이 경우 설계를 재검토해야 합니다.Java는 이미 어레이나 컬렉션 등 다수의 인스턴스를 저장할 수 있기 때문에 추가 클래스를 작성할 필요가 없습니다.
그렇지 않은 경우 이 메서드 이름은 문제 없습니다.대안은 아마도allStoresOpen
'is'를 빼고.
TL;DR: 여러 인스턴스를 다루고 있다면, 이는 getter가 아닙니다.만약 그렇다면, 당신의 디자인은 나빠요.
솔직히 말해서, 난 확실히 그 일에 대해 잊어버리고 싶다.are*
에 충실하다is*
생각해 보세요."is"
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
isStoresOpen은 그렇게 나쁘지 않지만, isStoresAreOpen이 더 낫다면 사용할 수 있습니다.
하지만 내 일반적인 생각은 관습을 고수하는 것이다.getters에는 "get"을, boolean type에는 "is"를 사용합니다.개인적으로 저는 "is"를 사용하는 것이 때때로 이미 문제가 있다고 생각합니다.네 - "if" 조건에서는 좋아 보이지만 코딩할 때 "get"이라고 쓰고 드롭다운 목록에서 필요한 변수를 확인하고 무엇이 문제인지, 왜 찾을 수 없는지 궁금해지기 시작하면 "is"로 시작하는 것을 알 수 있습니다.
프로그래밍에서는,은, 지금까지 없었던 이기 때문입니다.Store
★★★★★★★★★★★★★★★★★」Cat
따로 클래스가 , 그 클래스는 있어야 .isOpen()
★★★★★★★★★★★★★★★★★」isFuzzy()
는, 하는 것을 해 주세요.높은 타입의 경우는, 실제로 사용하고 있는 원자 레벨로 분할하는 것을 검토해 주세요.일반적으로 오브젝트는 가장 낮은 레벨에서 복수해서는 안 됩니다.
이 StoresOpen의 isStoresOpen()은 복수처럼 보입니다.
Java 명명 규칙과 Java Beans 표준을 따를 경우 부울 및 기타 유형의 접두사가 미리 정의되어 있으므로 Java Beans 명명 규칙을 따라야 합니다.
요점만 말씀드리겠습니다.영어 예상고객과 같이 오픈을 하면 여러 개처럼 보입니다.다시 한 번 그 단어를 깊이 관찰해 봅시다.
여기서
storesOpen은 영문법에 따라 복수입니다.
isStoresOpen의 출력은 복수형이 아니라 단수형이거나 프로그래밍 규약상 스칼라형이라고 할 수 있습니다.
out come은 boolean이고 true 또는 false일 뿐입니다.
당신의 영어 복수 문장은 참과 거짓이 다르다.
true 또는 false 배열 또는 true 또는 false 컬렉션 없음
여기서 말하는 것은 이 부울빈 메서드에서 반환되는 값이지 실제 엔티티를 가리키는 클래스의 속성에 지정된 이름이 아니라는 것입니다.
한 가지 더 중요한 것은 이러한 부울 속성이 클래스에서 사용되고 프레임워크의 사전 정의된 라이브러리에 의해 사용될 때마다 부울 값을 검색하기 위해 접두사가 'is'인 프레임워크가 사용됩니다.
왜 복수/단일어, 멀티플렉서 등 영어 문법을 알고 있는데 너보다 똑똑하지 않다는 뜻이지...
언급URL : https://stackoverflow.com/questions/12960554/java-boolean-getters-is-vs-are
'programing' 카테고리의 다른 글
함수 호출에서 옵션 인수를 건너뛰려면 어떻게 해야 합니까? (0) | 2022.10.20 |
---|---|
utf8mb4를 사용한 MariaDB 오류 (0) | 2022.10.20 |
"테이블 메타데이터 잠금 대기" 상태의 원인이 되고 있는 트랜잭션을 확인하려면 어떻게 해야 합니까? (0) | 2022.10.11 |
MySQL 테이블에 행이 있는지 테스트하는 가장 좋은 방법 (0) | 2022.10.11 |
Python 객체가 "서브스크립트 가능"인지 아닌지는 무엇을 의미합니까? (0) | 2022.10.11 |