2010-05-12 5 views
5

나는 자바에서 다음 if -statement를 작성했습니다 :if-statement의 조건부 연산자는 무엇입니까?

if(methodName.equals("set" + this.name) || 
    isBoolean() ? methodName.equals("is" + this.name) : 
        methodName.equals("get" + this.name)) { 
    ... 
} 

이 조건에서 상태를 분리, if 이러한 표현을 쓰는 것이 좋습니다? 그리고이 표현을 단순화 할 수 있습니까? 그것은 좋은 연습

+0

기존 Javabean 매핑 도구에 대해 알고 있습니까? ** ** 많이 ** 있습니다 ** :) – BalusC

+0

특별히 기여할만한 것이 없지만 삼중 연산자를 좋아하는 사람이라 할지라도 일부 사람들은 매우 드물게 사용되어야한다고 강력히 믿습니다. 그 사람들은 아마도 당신의 사용법을 푸우 푸우 할 것입니다. –

+0

@BalusC : JavaBean 활동을 추측 할 수 있습니다. 저는 취미와 개인적인 용도로만 구현하고 있습니다. 각 setter에서'super.property (newValue) '로 Beans 내부의 구문을 정리합니다. ;-)하지만 나는 그들에 대해 알고있다. 언급에 감사한다. – Pindatjuh

답변

8

내가

if (methodName.equals("set" + this.name) 
|| methodName.equals((isBoolean() ? "is" : "get") + this.name)) { 
    ... 
} 
+0

그리고 나는 여분의'this.'을 삭제할 것입니다. –

+1

@ Software Monkey : 그것은 제 코드 스타일입니다. 당신을 괴롭히면 미안 해요. – Pindatjuh

+0

@Pindatjuh : 충분히 공정하게 - 나는 "~해야한다"고 말했어. "~해야한다". 각각 자신에게. 그것은 나를 귀찮게하지 않는다. 단지 여분의 타이핑 일 뿐이다. –

2

로 변경 것입니까? 읽기가 쉬워지면 좋습니다. 그것은 (1) 그것이하고 (2) 혼란 스러울 사람이 그것을 읽지 않을 것 인 경우에 읽기 쉽게 만듭니다. 누가 그것을 읽을 것입니까?

2

다음과 같은 작업을하지 않으시겠습니까?

if (methodName.equals("set" + this.name) 
    || methodName.equals("get" + this.name) 
    || (isBoolean() && methodName.equals("is" + this.name))) { 
    ... 
} 

3 진수 연산자를 사용하는 방식보다 읽기 쉽고 확실히 이해하기 쉽습니다. 또한 isBoolean 메서드에 대한 불필요한 메서드 호출을 피할 수있는 이점이 있습니다 (1, 2 또는 4 메서드 호출이 있지만 사용자는 항상 1 또는 3을 가지며 성능 이득/손실은 알 수 없을 정도로 작습니다).

또한 여기 "Is this a reasonable use of the ternary operator?" 한 사용자가 the following to say했다라는 비슷한 질문이있다 :

삼항 연산자는 반환 값을 의미한다.

IMO, 상태를 변경하면 안되며 반환 값을 사용해야합니다.

다른 경우에는 if 문을 사용하십시오. 문은 코드 블록을 실행하기위한 것입니다.

내가 가독성을 위해 '& &'을 포함하는 표현 괄호를 포함 있습니다 마십시오. 그들은 전에 x && y이 평가되기 때문에 필요하지 않습니다.

사용 여부는 사용자에게 달려 있지만 사용하기 쉽도록하는 경향이 있습니다.

private String setterForThis() { 
    return "set" + this.name; 
} 

private String getterForThis() { 
    return (isBoolean() ? "is" : "get") + this.name; 
} 

그것은 물론 긴하지만 어쨌든 골프에 정말 아니에요 :

+0

"getSomeBooleanProperty"메서드도 전달되므로 다시 작성하는 것은 매우 실용적입니다. 하지만 SLaks (주관적)만큼 읽기 쉽지 않습니다. – Pindatjuh

2

나는 추출 된 일부 기능을

if (methodName.equals(setterForThis()) 
    || methodName.equals(getterForThis())) { 
    ... 
} 

로 변경하는 경향 될 것이다.

관련 문제