문제

이것이 거룩한 전쟁이 아닙니다"라는 질문에는".

어떤 장점의 다음 형식을 사용하여 위한 하나의 문을 경우 블록입니다.

if (x) print "x is true";

if(x) 
    print "x is true";

반대로

if (x) { print "x is true"; }
if(x) {
    print "x is true";    
}

는 경우 형식의 단일 문 ifs 없이 대괄호 또 알고 프로그래머는 않습니다,무엇이 당신을 주도/들을 채택하는 이 스타일에 첫 번째 장소는?저는 특별히 관심이 어떤 혜택이 이를 가져왔다.

업데이트:으로 가장 인기있는 대답을 무시 실제적인 질문(는 경우에도 그것은 대부분의 온전한 조언),여기에 검거의 브래킷-적은 전문가입니다.

  1. 컴팩트
  2. 더 읽을 수 있는 일부
  3. 괄호 호출 범위는 이론적인 오버헤드에서 몇 가지 사례
도움이 되었습니까?

해결책

나이:

if( true ) {
    DoSomething();
} else {
    DoSomethingElse();
}

이보다 더 좋:

if( true )
    DoSomething();
else
    DoSomethingElse();

이 방법으로는 경우,본인(또는 다른 사람)다이 나중에 코드를 추가하는 코드를 더 가지 중 하나,나이를 둘러싸고의 코드호하는 장치입니다.우리의 눈이 시각적으로 들여쓰기 단서로 우리가 무엇을 하려고 하지만,대부분의 언어로하지 않습니다.

다른 팁

나는 강하게 싫어하는 어떤 스타일에는 배치하는 경우의 테스트 및 몸과 같은 동일한 라인입니다.

이 때문에 공유 라인을 설정 중단점에 경의 몸에서는 많은 디버거기 때문에 중단점은 일반적으로 줄 번호를 기반으로합니다.

항상 사용하는 교정기에 좋은 아이디어만의 표준 답변을 항상 주어진"만약 누군가 추가 코드의 라인을 잊어 추가 괄호?"오히려 약한 이유입니다.

가 미묘한 버그 수 있습에 의해 도입되지 않는 교정기에서 시작합니다.그것은 나에게 일어난 몇 번 그 실제로 그런 일이 일어난 적이 있었어를 다른 프로그래머를 위한 것입니다.

그것을 밖으로 시작,충분히 순수,간단하는 경우 문입니다.

if (condition)
    do_something();
else
    do_something_else();

는 모든 그리고 좋은 것입니다.

그런 사람이 함께 나오고 또 다른 조건이 추가됩니하는 경우.그들을 추가할 수 없습니다 사&&하는 경우 문은 그 자체이기 때문에 논리는 것이 잘못되었다,그래서 그들은 다른 추가하는 경우.우리는 지금:

if (condition)
    if (condition2)
        do_something();
else
    do_something_else();

당신이 문제인가요?그것도 보이지만 컴파일러는 다르게 본다.그것은 그것을 보고 다음과 같다:

if (condition)
    if (condition2)
        do_something();
    else
        do_something_else();

을 의미하는 무언가가 완전히 다릅니다.컴파일러에 관심이 없다고 서식을 지정합니다.은 다른 사람이 가진 가장 가까운 경우.인간은,다른 한편으로는,포맷에 의존하기 쉽습 문제입니다.

난 항상 사용

if(x) 
{
    print "x is true";    
}

밖으로 떠나 괄호할 수 있는 결과 누군가에서 유지하는 코드로 잘못 생각하고 그들이 추가하면 절한 경우 그들은 줄을 추가한 후 현재 라인입니다.

내가 사용하는

if (x)
{
    DoSomething();
}

여러 선지만,내가 선호하는 bracketless 강선:

if (x)
   DoSomething();
else
   DoSomethingElse();

내가 찾는 외부 괄호를 시각적으로,공격 및 나는 하나의 상기 실수하지 않을 추가할 때에는 괄호 안에 다른 추가 문의입니다.

if
{
// code
}
else 
{
// else code
}

좋아하기 때문에 나는 때 블록의 코드 라인까지(을 포함한 그들의 중괄호).

면 나는 코드:

if(x) 
    print "x is true";

고 6 개월 후 추가할 필요가 새로운 라인의 존재,중괄호를 훨씬 덜하겠 유형

if(x) 
    print "x is true";
    print "x is still true";

는 결과 논리적인 오류가,대:

if(x) { 
    print "x is true";
    print "x is still true";
}

그래서 중괄호를 이러한 논리는 오류 읽기 쉽고 피하기 위해,나는 찾을 수 있습니다.

처럼 매트(3 위),세요:

if (x)
{
    ...statement1
    ...statement2
}

if (x)
    ...statement
else
    ...statement

나는 생각한 그것의 아주 이상한 생각하는 사람이 올 수 있습니다 따라 나중에 그들은 깨닫지 추가해야 교정기를 형성하 멀티 라인 경우 블록입니다.는 경우에는 자신의 능력을 넘어,궁금 무엇이 다른 것이 있다!

하나의 문이 부족한 중괄호:

장점:

  • 청소 보기

단점:

  • 균일:하지 않는 모든 경우 블록 동일하게 보
  • 잠재적 버그를 추가할 때 문에 구획:사용자하는 것을 잊지 수 있습니다 추가 교정기와 새로운 문 없에 의해 덮여 있는 경우.

로 in:

if(x) 
    print "x is true";
    print "something else";

는 단 하나의 라인 때 나는 테스트를 위한 휴식을 조건의 시작 부분에서 기능이 좋아하기 때문에 이 코드를 간단하고 깔끔 가능

public void MyFunction(object param)
{
     if (param == null) return;

     ...
}

또한,을 발견하면 나는 내가를 피하려고 교정기 및 인라인하는 경우 절 코드,내가할 수 있는 단일 선,그들을 그냥 그래서 그것은 분명 사람에게 추가하는 새로운 라인을 경우 괄호해야 할 필요가 없 추가

내가 사용하는

if (cond) {
  ...
} else {
  ...
}
  • 모두 항상 있어야 교정기.는 경우에도 이제 나는 단지 하나의 라인에 경우,블록 내가 만들어 나중에 더 추가.
  • 나지 않는 괄호를 넣어에서 자신의 라인 때문에 그것은 무의미의 범퍼 스티커를 만들었습니다.
  • 저는 거의 블록과 같은 줄에 있는 조건에 대한 가독성을 높입니다.

Joel Spolsky 썼다 좋은 기사: 을 만드는 잘못된 코드의 잘못된 모습

그는 특히 이러한 문제를 해결합니...

if (i != 0)  
    foo(i);

이 경우에는 코드가 100%정확;그것을 준수하는 가장 coding conventions 그리고 거기에 아무것도 그것은 잘못이지만, 는 사실은 단일 문의 몸의 ifstatement 지 중괄호로 묶을 수 있습을 귀찮게 당신 기 때문에 생각할 수도 있습니다에 머리 뒤쪽,세상에,누군가 수도 있습 삽입 또 다른 라인의 코드 가

if (i != 0)
    bar(i);
    foo(i);

...잊지 추가 괄호 따라서 실수로 만들 foo(나)무조건적인!그래서 당신이 볼 때 코드 블록에 포함되지 않은 괄호 수도 있습 감각을 그냥 작은,wee, soupçon 의 부정하게 당신은 불안합니다.

그가 제안 당신은...

...의도적으로 건축가 코드 같은 방법으로는 코 부정하게 코드 이 될 가능성이 맞습니다.

내가 싫어하는 중괄호를 사용하면 그들이 필요하지 않습니다.나는 그것 같이 느끼풀리의 줄 수는 방법이고 그것을 읽을 수 있습니다.그래서 나는 항상을 위해 다음과 같다:

if (x)
   print "x is true"
for (int i=0; i<10; i++)
   print "y is true"

등등.만약 누군가가 다른 추가 문을 수행할 수 있습니다 추가 교정기.하지 않는 경우에도 있 R#또는 이와 유사한 그는 아주 작은 거래입니다.

여전히 존재하는 어떤 경우는데 중괄호를 사용하는 경우에도 하나만 있 라인에서 문는 경우 라인은 특히 장거나,필요한 경우 의견 내부에는'만약에'.기본적으로,나는 단지 어떤 사용하는 것이 좋은 나의 눈을 봐.

공백은 당신의 친구입니다....

그러나,그런 다음,다시 나는 다음과 같:

if (foo)
{
    Console.WriteLine("Foobar");
}

진심으로,때 마지막 시간에 당신에게 모든 코드를 어디서나는 원인이 누군가가:

if (a)
  foo();
  bar();

그래,지*유일한 진짜'pro'여기를 맞은 스타일의 주변 코드고 심미적인 전투에 참여하는 아이들을 그냥 나 대학도 있습니다.

*(주의되는 경우 foo();바();었 매크로 확장이지만,그 문제를 w/매크로,아 괄 w/ifs.)

if (x) {
    print "x is true";    
}
else {
    do something else;
}

나는 항상 입력 교정기.그냥 좋은 습관이다.비교를 생각,입력하지 않은"일".

참고하기 전에 공간을 조건입니다.는 데 도움이 보이지 않는 메소드 호출.

다른 방법을 작성하는 것입:

(a==b) ? printf("yup true") : printf("nop false");

이 될 것입니다 실용적인을 저장하려는 경우에는 값을 비교하는 간단한 조건을 이렇게:

int x = (a==b) ? printf("yup true") : printf("nop false");
if (x)
{
    print "x is true";
}

개폐 버팀대에서 동일한 열을 쉽게 찾을 수 있 일치하지 않는 괄호,시각적으로 분리합니다.개방 버팀대에서 동일한 열로"만약"간편하게 참조 블록 부분의 조건입니다.여분의 공간을 차단하여 만든 포함하는 행 괄호 간편하게 선택을 논리적 구조 때 skimreading 코드입니다.항상 사용하여 명시적으로 중괄호 문제를 방지할 때 사람들은 코드를 편집상과 오해하는 문은 부분의 조건부하고 있는지 들여쓰기 일치하지 않을 수도 있습이 현실,그러나 중괄호로 묶여 항상 것입니다.

대만 시간이 없는 인증을 받는 것을 허용되는 경우 매개 변수를 확인하에서의 시작방법:

public int IndexOf(string haystack, string needle)
{
    // check parameters.
    if (haystack == null)
        throw new ArgumentNullException("haystack");
    if (string.IsNullOrEmpty(needle))
        return -1;

    // rest of method here ...

유일한 혜택은 소형이다.프로그래머 없이 통하여 유엔 필요한{}'s 때 그것은 아주 분명:

  • 는 방법을 종료에 어떤 진실점
  • 그것은 매우 분명 이들은 모두 1-선

는 말했다,나는 항상{}프로그램 논리를 이유로 명시하여 다른 사람입니다.를 삭제할 때 괄호 그것은 너무 쉽게 정신적으로 지탱하지 않을 때가 있고 소개하는 미묘한 코드 결함이 있습니다.

H8ers 저주 난 정말 하나는 교리상 규칙이 있습니다.특정 상황에서,내가 실제로 부탁을 소형화에 실행되지 않는 경우 특정 폭,예를 들어:

if(x > y)      { xIsGreaterThanY(); }
else if(y > x) { yIsGreaterThanX; }
else           { xEqualsY(); }

이것은 훨씬 더 읽을 수 있는 나에게 보다:

if( x > y ){
    xIsGreaterThanY(); 
}else if( x < y){
    yIsGreaterThanX();
}else{
    xEqualsY();
}

이것은 혜택을 추가의 사람들을 격려를 추상적인 논리로 방법(로 했어)보다 한덩어리로 만든 유지한 더 많은 논리로는 중첩된 경우-다른 블록입니다.그것은 또한 세인 보다는 오히려 일곱을 만들 수 있습니다 그것은 가능하지 않을 스크롤해야 볼 여러 방법,또는 다른 코드입니다.

내가 선호하는 괄호 안의 스타일을 주로하기 때문에,그것은 눈이 맑고 시작하고 지점을 중지합니다.그것은 쉽게 무엇을 보고 실제로에 포함된 성명,그리고 그것이 실제로는 경우 문입니다.작은 것,어쩌면,하지만 그 이유는 내가 그것을 사용합니다.

그래서 그것은 사이에 일관 팀은 당신이에서 작동한 다음 그것은 너무 많은 문제가

는 모두가 같은 중요한 것은

브라케팅의 한 라면 문장은 상당한 정기의 장점을 보호하는 두통에서 당신 경우,나중에,당신은(또는 다른 코더를 유지하거나 변경하는 코드)을 추가해야 할 문의 어떤 부분에 그 조건을 차단합니다.

는 경우 다음과 같은 것이 가능합니다.

if(x)
{
    somecode;
}
else
{
    morecode;
}

이 작품에 대한 더 나은 원본 컨트롤과 전처리기는 지시어 코드에서는 긴 시간이다.그것은 쉽게 추가하는#는 경우도 없이 실수로 파괴 문 또는 추가 라인입니다.

그것은 좀 이상한 사용,작동 하지만 아주 잘 후 니다.

면 그것은 하나의 라인 경우(선택적으로 하나의 라인을 다른 사람)내가 선호하는 사용하지 부류입니다.그것이 더 읽기 쉽고 간결하고 있습니다.내가 말하는 내가 그것을 선호하기 때문에 그것은 순전히 자신의 취향의 문제이다.하지만 나는 생각하려고 적용하는 표준에 당신은 항상 사용하여 중괄호습니다.

이 있는 경우를 걱정할 사람에 대한 추가하기 다른 라인 몸의 경우 문을 추가하지 않음(단,다음 필수)를 괄호,나는 당신을 생각해야 보다 더 큰 문제가 sub-비잔틴 수 있습니다.

/* I type one liners with brackets like this */
if(0){return(0);}
/* If else blocks like this */
if(0){
    return(0);
}else{
    return(-1);
}

나는 사용하지 않는 불필요한 공백을 넘어 탭지만,항상 포함 괄호장의 힙 시간입니다.

내가 싫어 닫는 교정기에서 동일한 라인과 따라 키워드:

if (x) {
    print "x is true";    
} else {
    do something else;
}

이것을 제거하기 어렵게/주석으로만 다른 절입니다.를 넣어에 따라 키워드가 다음 줄에서 이용하실 수 있습의,예를 들어,편집하는 나에게 선택의 범위를 줄이고,코멘트/uncomment 한 번에 모두.

if (x) {
    print "x is true";    
}
//else {
//    do something else;
//}

나는 항상이 선호:

if (x) doSomething();

if (x) {
    doSomthing();
    doOtherthing();
}

하지만 항상에 따라 언어와의 작업합니다.때로는 내가 좋아하는 괄호를 넣어하고 때로는 없습니다.에 따라 코드,하지만 나는 코딩과 같은 있을 작성하면,다시 쓰기와 읽기 백 번;그래서,단지 그것을 당신이 원하는 것처럼 하고 당신이 원하는 것처럼 읽고 이해하는 더 빠르게

무슨 상관 없이,이것은 내가 간다!그것은 보인다.

If(x)
{
    print "Hello World !!"
}
Else
{
    print "Good bye!!"
}

궁금하다면 이름이 무엇을 위해 다양한 코드 서식 스타일은,전에서 문서 들여쓰기 스타일.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top