2016-10-31 3 views
10

나는 많은 사람들이이 규칙을 제안 알아?Java에서 부울 동사의 변수 및 메서드 이름 지정 규칙?</p> <pre><code>boolean deleted; boolean isDeleted(); </code></pre> <p>하지만 사용자가 떠날 수 있음을 나타내는 부울 이름을 할 때 당신은 무엇을해야합니까 :

boolean userCanLeave 
boolean isUserCanLeave() 

boolean canUserLeave 
boolean isCanUserLeave() 

boolean userLeave 
boolean isUserLeave() 

boolean userLeave 
boolean canUserLeave() 

표준이 있는지 또는 가장 읽을 수 있다고 생각하는 것이 맞는지 확실하지 않습니다. 여기서 흥미로운 메서드 이름 매핑을 가져 오는 변수입니다.

+0

@TimBiegeleisen 아니요, 저는 이것이 다른 시나리오라고 생각합니다. –

+0

아니요 특정 Java 기반 기술이 getter의 'is'및 'get'형식을 인식 할 때 적어도 부분적으로 관련이 있다고 생각합니다. –

답변

9

userAllowedToLeave과 같은 더 나은 변수 이름을 사용해야합니다.

그런 다음 게터 방법을 isUserAllowedToLeave()으로 사용하십시오.

적어도 "is"게터를 사용하고 문법적으로 올바른 것으로 들립니다.

+0

나는 당신의 의견에 동의하지만 너무 길어지는 것을 생각하지 않습니까? "AllowedTo"와 접두사 "is"는 같은 일을합니다. "AllowedTo"는 문법적으로 더 읽기 쉽게 만듭니다. –

+0

@TnHn - 장황하게 들릴지 모르지만, 여전히 매우 이해하기 쉽고 읽기 쉽습니다. "허락 된"의 유용성은 그 이름을 문법적으로 옳게 만드는 것입니다. 그리고 그런 사소한 경우에는'enum'을 사용하면 안됩니다. 이해하기 쉽고 실행하기 쉬운 코드에만 추가됩니다! –

1

많은 프레임 워크는 여전히 방법은 콩에 값을 설정하는 호출을 사용하고, 그 방법은 일정한 패턴을 준수해야합니다 나는 '경우에도

isXXX 또는 getXXX

그래서 내가 그에 충실하려고 빈의 인스턴스를 생성하기 위해 프레임 워크를 사용하지 않거나, 프레임 워크가 리플렉션을 사용하여 변수에 직접 바인딩하는 경우. 나는 여전히 좋은 습관이라고 생각한다.

so getUserCanLeave()? 또는 isUserLeavable()?

2

이와 같이 부울을 사용하는 것은 거의 항상 나쁘고 혼란스러운 생각입니다. 코드를 이해하기 쉽고 쉽게 관리 할 수 ​​있도록하려면 enum을 사용하여 상태를 표현해야합니다. 예를 들어 강력한 전환 규칙 (FSM)을 사용해야합니다. 당신의 '휴가'개념은 사용자가 작업을 완료하거나 작업의 설정 여부에 따라된다고 가정

, 당신은

public enum UserState { inProgress, complete } 

당신은 다음과 같은 사용자 클래스의 메소드 leave을 구현할 수있을 수 있습니다 :

public void leave() { if (state == UserState.complete) ... } 

여기에서 state은 위에 정의 된 enum의 개인 인스턴스입니다. 그러한 일이 필요한 경우 getState에 대해 isLeaveable이라는 질문을 재구성 할 수 있습니다. 물론 상태를 적절하게 변경하고 사용자가 작업을 완료 할 때 호출되는 complete() 메서드가 필요합니다.