2013-08-05 1 views
1

전 Google 직원의 블로그에서 뭔가를 얻었습니다.자바의 if 조건에서 중괄호를 생략하십시오.

if (condition) { 
    return x; 
} else { 
    return y; 
} 

그러나 나중에 구글 내부가 변경되었다 이렇게 될 : 그는이 같은 조건이있는 경우 Google 사용자가 자바에 대한 규칙을 가지고하는 데 사용했다

if (condition) { 
    return x; 
} 
return y; 

이 비슷하다거나 질문을 중복 보인다 SO (예 : this one) 그리고 Oracle official Java Code Conventions for this도 확인했습니다. 나는 그것들의 차이에 대해서만 궁금해서 무시할 만하다.

PS : 토론을 유도하는 것은 아닙니다. 사람들이 다른 방식으로 설명 할 수 있기를 바랍니다.

+0

, 난 오래된 학교 "의 원칙에 작업 : 코드는 거의 항상 더 많은 읽을 수있는 그런 식으로 - 당신은 항상 최소로 중첩 된 블록 ({...})의 수를 제한하려고한다 하나의 진입 점과 하나의 출구 점 "으로 표시됩니다. 나에게 이것은 단일 return 문을 사용한다는 의미입니다. 이렇게하면 코드를 읽을 때'return' 문을 놓치지 않을 가능성이 적어집니다. 특히 긴 메소드에 두 개 이상이있는 경우 특히 그렇습니다. 최적화에 대해서는 잘 모르겠지만, 가독성과 최적화에 대한 자세한 내용은 다음과 같습니다. – MadProgrammer

+0

첫 번째 조건이 충족되면 x를 반환합니다. else 블록을 사용하거나 else 블록을 사용하지 않으면 y를 반환하므로 else 블록이 없으면 더 명확합니다. –

+1

IMO 대답은 다음과 같습니다. http://programmers.stackexchange.com/a/118748/47845 – assylias

답변

0

이것은 더 나은 코드 형식 권장 중 하나입니다.

이클립스를 사용하는 경우, 당신은 환경 설정에서이 경고를 활성화 할 수 있습니다. 불필요한 다른 조건이있는 곳의 코드 블록을 알려줍니다.

0

기능상 차이는 없습니다. 개인적으로 나는 두 번째 프로그램을 선호 할 것입니다. 프로그램에서 아무 것도하지 않으면 여분의 프로그램을 추가하는 것이 싫기 때문입니다.

기술적으로 두 번째 코드 단락에서는 중괄호가 필요하지 않지만 코드의 가독성을 높이고 빠른 검사 이해력을 유지하기 위해이 코드를 사용하는 것이 좋습니다.

나는 코드가 JBC로 번역 것이 매우 방법을 모른다, 그러나 다른 실제로 만들어 더 지침은 다른없이보다 실행될 경우 나는 놀라지 않을 것이다. 간단한 수익보다 더 많은 작업을 수행하는 경우

, 나는 중괄호와 함께 다른 사람을 사용하는 것이 좋습니다 것이지만, 그렇지 않으면 단순히 조각 # 2의 구조를 따릅니다.

0

두 경우 모두 조건을 평가할 때 차이점 (기능 및 성능)은 없습니다. 다른 사람/조직이 적용되는 코드 구조 및 서식 지정 방법에 차이가 있습니다.

일부는 else있는 것은 더 자세한 또는 명시 적입니다 주장한다.

PMDFindbugs에는 else이 중복되는 코드 품질 규칙 (경고 수준)이 있습니다. 따라서 이러한 코드 분석 도구에서 기본 템플릿을 사용하도록 설정하면 경고 보고서에 해당 부분/메서드 호출이 포함됩니다.

여러 return 문을 사용하는 경우 코드 가독성이 낮아 지므로 피하는 것이 좋습니다 (PMD 및 FindBugs의 유사한 설정). 보다 간단한 코드를 게시하려면 두 개의 코드가 포함되어 있어도 괜찮은 것처럼 보이지만 다른 조건에서 다른 값을 반환하는 복잡한 조건부 로직을 고려해보십시오. 코드를 이해하는 것이 쉽지 않을 것입니다. 그것의 더 나은 (이상은) 어떤 하나 가지고는 argue 작은 return 문이합니다 :

int data = DEFAULT; 
if(condition) { 
    data = XYZ; 
} else if(condition) { 
    data = DDD; 
} 
return data; 
+0

return 문을 하나만 사용하는 경우 [http://sunsolve.microsoft.com/korea/exchange/questions/118703/where-did-the-notion-of-one-return-only-come-from] . – assylias

+0

@assylias는 링크를 공유해 주셔서 감사합니다. 정말 흥미로운 통찰력입니다! – harsh

2

나는 개인적으로이 또는 괄호없이, 훨씬 더 읽기 나를 위해입니다

if (condition) { 
    return x; 
} else { 
    return y; 
} 

선택하고 싶습니다 . 이것은 return 문이므로 많은 차이를 만들지 않을 수 있습니다. 그러나 아래의 예처럼, 단지 문 말할 수 있습니다 :

if (condition){ 
    //some statements 
} else { 
    //some related statements 
} 
시간과이 코드는 명확 사람이있는 것을 구별이 경우 아래

if (condition){ 
    //some statements 
} else { 
    //some related statements 
} 
//some totally unrelated statements 

같은 것을 이어질 수 진행

그 상태에 영향을받습니다. 앞으로 리팩토링해야 할 때가 더 쉬울 수도 있습니다.

본인의 개인 취향입니다. 리드/건축가/동료와 확인하고 환경 설정이 있는지 확인하는 것이 좋습니다. 엄지 손가락 규칙에 따라 팀의 취향대로 진행하는 것이 좋습니다.

0

코드의 논리에는 차이가 없으며 두 경우 모두 정확하게 동일한 바이트 코드로 컴파일 될 수 있다고 생각합니다. 개인적인 취향에 관한 것입니다. 다음은 이전 접근 방식에 찬성하여 관련된 요소의 짧은 목록입니다.

  1. 첫 번째 예와 같이 "세 번째 옵션"은 없습니다. Java 컴파일러는이를 감지 할만큼 똑똑하지만, 실행을 완료하지 않는 함수 (return)는 if 또는 else 블록 내에 있습니다. 첫 번째 코드는 이런 경우 일 수 있습니다. 특히 코드가 커지면 return statemenets이 더 이상 명확하게 보이지 않습니다.
  2. 열린 중괄호의 수를 제한하십시오. 내 의견으로는 더 중요합니다. 개인적으로

    for (...) { 
        if (...) { 
         if (...) { 
          // this sucks, 3 levels of indention 
         } 
        } 
    } 
    
    for() { 
        if (!...) { 
         continue; 
        } 
    
        if (!...) { 
         continue; 
        } 
    
        // maybe there's more code but it's much easier to read and maintain 
    }