2011-12-12 4 views
5

개발을 시작했을 때, 나는 항상 {} (중괄호)을 사용하여 블록을 묶는 튜토리얼을 따라 갔다. 그러나 다른 사람들의 코드 (예를 들어 GitHub의 클래스 또는 기본 튜토리얼보다 일반적으로 더 많은 코드)를 살펴 보았지만 블록 문은 {}에 포함되지 않은 채로 보았습니다. 예를 들어, 블록 - 중괄호/중괄호 없음?

if($var < 15) 
    $string = 'Hello, Jimmy!'; 
elseif($var >= 15) 
    $string = 'Hello, Anne!'; 

그러나 내가 오늘 그들을 사용, 내가 {}로 묶여 블록을 사용한 적이

if($var < 15) { 
    $string = 'Hello, Jimmy!'; 
} elseif($var >= 15) { 
    $string = 'Hello, Anne!'; 
} 

과 동일하며 나는 이렇게의 효율성을보기 시작 해요 (이 보인다 많은 청소기도, 나는 종종 내 기능 루프, 조건문 등으로부터 {}으로 가득 찾을 수 있습니다로

내가 부탁 해요 것은,

) 중괄호 (;)가없는 블록에는 제한이 있습니까? 한 줄을 입력하고 if() 조건부로 돌아 오면 IDE가 들여 쓰기에서 뒤로 떨어지는 것을 보았습니까?

b) {}을 사용하지 않을 때 모범 사례가 있습니까?

모든 답변, 특히 그 inc. 블록/중괄호 사용법에 대한 background/docs는 중괄호 사용법을 이해하고 싶으므로 크게 감사하겠습니다.

+1

환경 문제입니다. 나는 정말로 그들을 생략하는 것을 싫어한다. 당신이 일관성이 있다면, 아마 괜찮을거야. –

+0

SSL에서이 중요한 버그가있는 경우이 질문은 매우 적절하다고 말하고 싶습니다. * 항상 중괄호를 사용하면이 문제가 발생하지 않았 음을 확인할 수 있습니다. https://www.imperialviolet.org/2014/02/22/applebug.html – Alan

답변

4

당신은 {} 하나 하나의 라인을 생략 할 수 있습니다 ('하나만해라'). 나머지는 무조건 실행됩니다.

그렇습니다. {}이 없기 전에 나는 조잡한 방법을 보았습니다. 나는 논리를 분리하고 읽기 쉽도록 {}을 사용하는 것을 선호합니다.

코드에 {}을 사용하십시오.

+1

철저한 답변! 나는 그들을 사용하는 방법을 고수 할 것이다 :). 타이머가 떨어지면 받아 들일 것입니다. – Avicinnian

8

최상의 방법은 항상 사용하는 것입니다. 다른 개발자가 코드 줄을 추가하거나 코드 줄을 삭제하고 실수로 조건을 완전히 깨는 것은 너무 쉽습니다.

if(something) 
    do something else 

당신이 그것을 생략하고과 같이 계속 가질 수 없습니다 그러나 :

if(something) 
    do one thing 
    do another 
    do some more 

위의 예제는 단지 1 개 조건부 요소가 것이다

0

중괄호 뒤에 두 줄 이상의 코드가있는 경우에만 사용해야합니다. 한 줄 이상이있는 경우

if($var) { 
    return true; 
} 

같은

if($var) return true; 

그러나, 당신은 중괄호를 묶어야합니다.

if($var) { 
$var += 1; 
$var2 = $var; 
return $var2 
} 

는 개인적으로 나는 한 줄의 코드가 바로이기 때문에, 그것은 청소기 보이는 다음 경우 그 사용을 중단 특히 경우 상단 문 등의 모든에 한 줄. 또한 else if 문을 줄이고 if에 실패한 경우에만 return을 사용하여 함수를 중지하고 다음 if을 계속 true로 설정하면 코드를 더 쉽게 관리 할 수 ​​있습니다. 그것은 else if 진술`을 많이 사용하여 실제로 지저분해질 수 있고 당신은 스위치를 사용하지 않습니다. 개인적인 취향 이외에, 단지 한 줄의 코드라면, 중괄호를 잃어 버려라.

전문 개발 분야에서는 AlienWebguy가 옳습니다. 명령문이 조건 또는 루프 후에 실행할 경우

0

중괄호는 하나의 라인 선택 사항 :

중괄호와 함께 한 줄의 문장을 둘러싸고 여부
//This outputs "hello" 
$test = 1; 
if($test == 1) 
    echo "hello"; 

//This outputs "howdy" 
$test = 1; 
if($test == 2) 
    echo "hello"; 
    echo "howdy"; 

은 개인적인 취향의 문제가와 또한 협업 프로젝트에서 작업하는 경우 코딩 스타일 문서에 의해 지시 될 수 있습니다. 개인적으로 나는 단일 문장을 위해 이들을 사용하지 않으며 코드가 어떻게 구성되어 있는지 보여주기 위해 내 코드의 들여 쓰기를 허용하지 않지만 위의 두 번째 예제를 보면 이전에 버그가 들어있는 경우를 보았습니다. 코더는 해당 조건에 따라 실행되는 단일 행 그런 다음 다른 코더가 들어가서 두 번째 줄을 추가하지만 중괄호를 추가하지 않습니다. 그래서 그 관점에서 당신은 항상 그것들을 사용한다고 말할 수 있습니다. 그것은 당신의 개인적인 상황에 많이 달려 있습니다.

1

주로 사용하는 스타일에 따라 다릅니다. http://en.wikipedia.org/wiki/Indent_style

if (some_error) 
    something(); //Will be executed only when some_error==true 
somethingelse(); //Will always be executed. 

중괄호를 사용하지 않는 경우에만 다음 라인은 if 문의 일부입니다. some_error이 사실인지 여부를 물론

if (some_error) err1 = "bad1"; errorno=3; 

, 위의 예에서 errno는 항상 3 할 것이다. 이 시작되는 그것이 끝나는

그것은 루프

for (i = 0; i < 10; i++) 
    doSomething (i); 

그래서 괄호 표시

에와 동일합니다. 이들을 사용하지 않으면 if, for, while, ... 문에 의해 다음 행만 영향을받습니다.

또한 중괄호를 사용하여 코드 블록을 표시 할 수 있습니다. C++에서 코드를 작성할 때 항상 중괄호로 GL 호출의 시작과 끝을 표시합니다.

glBegin(GL_TRIANGLES); // Drawing Using Triangles 
{ 
    glVertex3f(0.0f, 1.0f, 0.0f); // Top 
    glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left 
    glVertex3f(1.0f,-1.0f, 0.0f); // Bottom Right 
} 
glEnd(); 

이 방법을 사용하면 glEnd가 누락되거나 읽히는 것이 더 쉽습니다.