rjzii
그는 물었다 12년 전
3

What is the 기본 스타일 단일 결정 및 작업 명령문입니다?

단일 결정 및 작업을 지원하는 언어의 경우, 다음과 같은 없이 브래킷에 예:

if (var == true)
    doSomething();

이 글을 쓰는 방법은 어떤 것이 좋습니다. 항상 고객의 사용 할 수 있는 기본 설정을 그대로 사용하거나 /dev/raw/raw200 브래킷에 개별 개발자? 또한 이 방식을 높여줍니까 코드 블록 크기를 다음 예제와 같은 따라 달라집니다.

if (var == 1)
    doSomething(1);
else if (var > 1 && var < 10)
    doSomething(2);
else
{
    validate(var);
    doSomething(var);
}

답변 20 개

내가 추천하는

if(a==b)
{
    doSomething();
}

내가 찾을 수 있기 때문에 초기 것보다 훨씬 더 쉽게 할 수 있도록 노력할 때 그 두 번째 성공을 위한 조건을 통해 추가 괄호는 추가해야 합니다.

if(a==b)
    doSomething();
    doSomethingElse();

매우 다른

if(a==b)
{
    doSomething();
    doSomethingElse();
}

참조 [Joel& # 39 의 문서] (http://www.joelonsoftware.com/articles/Wrong.html) brocade. com/support/service_plans.

indra
그는 10년 전 댓글을 달았습니다
0

항상 경우 괄호 안에 있는 실행하십시오 / else. 언제나 항상.

39, 진짜 좁히어 isn& 정답은 없다. 이게 회사 내에서 코딩 표준에 대한 것입니다. 이 회사 전체에 걸쳐 일관성 있게 유지할 수 있다면 그런 적립율은 쉽게 읽을 수 있습니다. 개인적으로 그것을비유하사

if ( a == b)    {
    doSomething();
}
else {
    doSomething();
}

하지만 이는 성전.

난 항상 중괄호를 사용하는 경향이 있다. 몇 가지 미묘한 버그 시작했던 오프하도록 다음과 같은 항목을 통해 볼 수 있습니다.

if(something)
 DoOneThing();
else
  DoItDifferently();

다른 작업 후 '다른' 를 잊지 추가하기로 조항 및 랩 (wrap it 괄호:

if(something)
 DoOneThing();
else
  DoItDifferently();
  AlwaysGetsCalled(); 

'알와이스제스칼레드 ()' 가 되고, 거기에 앉아 있으면 당장 아웃하기로 you& # 39 라는 코드가 모든 사람들이 왜 당신 3am 나오는 이상한, 뭐 그런 지적에 상당 기간 위해 할 수 있습니다. 이러한 이유로 혼자, 나는 항상 flfile. 중괄호.

내 기본 설정은 사용할 수 있는 일관된 사용하는 경우, 예를 들어, 한 블록, 심지어 부트해 브래킷에 브래킷에 내내 한 기술서임을:

if (cond1)
{
   SomeOperation();
   Another();
}
elseif (cond2)
{
   DoSomething();
}
else
{
   DoNothing();
   DoAnother();
}

방금 한 신앙이니라 a bunch of 라이너스:

if (cond1)
    DoFirst();
elseif (cond2)
    DoSecond();
else
    DoElse();

깔끔한 외모 (# 39, t mind 더미 don& 경우 메소드 이름을;) 하지만 that& 이쪽요 # 39 의 저만요.

또한 qic 구성 및 반복할 것.

foreach (var s as Something)
    if (s == someCondition)
        yield return SomeMethod(s);

이는 규칙을 더 고려해야 합니다 수 있는 적합한 .NET (mike jave 피프스 그런겁니다 중괄호 같은 줄에 있는 그들의 첫 번째 if).

이 기간동안 있었다, 하지만 내 7 년 동안 1 백악 경험 부족이 아니라 실제로 볼 수 없는 코드 신 I& # 39, ve 누구나 실수를 저지르지 않을 수 없다, 괄호 추가 코드를 추가할 때 블록의 doesn& # 39 중괄호. , # 39 의 that& 정확하게 제로 시간.

그리고 전, 아니, 그 이유는, t get to it 위스크래커스 wasn& # 39 는 braces&quot 모두라뇨 항상 ";).

따라서 실제 갖고 싶은 게 아니라 정말 정직한 질문 - 확보하십시오 다운보테스: 그게 판매업체에서 실제로 그렇게 됐나?

(편집: # 39, 무서운 이야기 좀 더 명확하게 이해할 수 있도록 충분한 i& 잘 알고 있는 것이 특징이다. 실제로 유능한 프로그래머가 c 판매업체에서 있습니까?)

Jay Bazuzi
그는 12년 전 댓글을 달았습니다
0

39 이 실수로 및 I& # 39, ve, ve 브라운아저씨의 i& http://support. &amp. 이 실수로 다른 사람이 되면 고정식입니다 했다. 토론 능력이 있느냐의 여부에 대해 열려 있었다.

39 편을 코드 s 에서 완료하십시오, 내가 페르송널리 McConnell& 설명.

때마다 포락선으로 사용할 수 있습니다. 그들은 code& 향상시키십시오 # 39, 가독성 및 분리하십시오 혼란 및 부족한 발생할 수 있는 몇 안 되는 것이다.

39 의 테오스콘시스텐시스 that& 더 중요한 일이 하나 있다. 항상 그렇게 할 수 있는 스타일을 판매업체에서 사용하는 것과 같은 방법으로 합니다.

같은 물건을 쓰기 시작합니다. &lt pre>; &lt code>; 만약 = true 펑스타 ();

만약 B = &quot Test"; { 펑스트브 (); } &lt /code>; &lt /pre>;

너 찾고 있는 won& 컴파일러와의 바인딩됩니다 다니엘을 이상한 버그 # 39, 너희는너희가 못하며창조된 찾기 어렵다는 것을 이해하지 노력하고 있었다.

기본적으로 한 틀렸다니까 편안하던가요 먹어서나 everytime 삼성벤처투자와 스틱 찾을 수 있도록 한다. 나는한다 사용하여 믿고 블록 데이메터스 (& # 39, & # 39, & # 39, & # 39}, {;) 최대한 갈 길이라고.

내가 don& # 39, t 시작할 수 있지만, 내가 바라는 건 뭔가 이와 관련 질문 안에 다른 언급을 전달하십시오 정신적 쥬스 것입니다. 1) 를 사용하여 브래킷에 결정을 내린 바 있다. 어디에 배치합니까 오프닝 브래킷에서? 이 같은 줄에 문 또는 그. 밀어맞춤된 브래킷에 방관하겠나? &lt pre>; &lt code>; 만약 A = {거짓값 이것저것 //calls 및 } //or 만약 B = &quot BlaBla"; { 이것저것 //calls 및 } //or 만약 C = B { 이것저것 //calls 및 } &lt /code>; &lt /pre>;

이 때문에 새 desktopplatforms don& 위해 오토메이티드 약간만이라도 질문이예요 t # 39. 만약 제가 이 질문에 대한 관심을 지켜보리니 내아기마저도 새로 열 네 입력입니다.

, 항상 강하게 정보지지자 어려울 때도 꼭 이래야겠어요 사용하여 they& # 39, re 선택적입니다. 왜? 이 청크에는 시행하십시오 C++ 코드:

if (var == 1)
  doSomething();
doSomethingElse();

이제 누가 누가 더 관심이 있는 만큼, t really 않했노라 isn& # 39 따라 추가 결정한다 (var = 1), 그들은 이 일을 할 경우 발생할 수 있어야 합니다.

if (var == 1)
  doSomething();
  doSomethingExtra();
doSomethingElse();

39, s, t 밀어맞춤된 하지만 여전히 아름다운 it& won& # 39 는 모든 일을 합니다.

중괄호, 이를 방지하기 위해 항상 you& # 39 에서 사용하는 일종의 버그, re 가능성이 더 높다.

39 이 문제에 대해, t really doesn& deltamove you& # 39, re 일관됨 진행합니다.

수요가 있을 것으로 보이지는 않습니다 경향이 동일성, 즉, s # 39 는 하나의 기술서임을 there& 브래킷에 there& # 39 의 경우, 한 분기로의 브래킷에 변경됩니다. 한 예로 리눅스 커널 코딩 표준에 따라 iqn.

39 의 sun& 코드 댁꽕 자바 프로그래밍 언어를 위한 는 [이] [2] 다음과 같이 말했습니다.

&gt. 이 클래스의 명령문입니다 다른 경우 합니다. &gt. 형식은 다음과 같습니다. &gt. &gt. &gt. if (조건) { &gt. 명령문입니다. &gt. } &gt. &gt. if (조건) { &gt. 명령문입니다. &gt. } else { &gt. 명령문입니다. &gt. } &gt. &gt. if (조건) { &gt. 명령문입니다. &gt. {} else if (조건) &gt. 명령문입니다. &gt. } else { &gt. 명령문입니다. &gt. }

[2]: http://java.sun.com/docs/codeconv/html/CodeConventions.doc6.html # 449

앞에서 언급한 것처럼 다른 일을 할 경우 괄호 없이 이어질 수 있는 문이 두 줄의 큰 혼란을 겪었다.

if (a == b)
    DoSomething();
    DoSomethingElse(); <-- outside if statement

그래서 내가 한 줄에 승인하십시오 수 있다면 좋겠지만, 가독성을 훼손하지 않으면서도 놓습니다.

if (a == b) DoSomething();

다른 모든 시간을 중괄호 사용하고 있다.

세도막 연산자는 조금 다릅니다. 그 중 대부분의 시간을 나는한다 한 줄로:

var c = (a == b) ? DoSomething() : DoSomethingElse();

하지만, 람다 함수 호출, 중첩할 제표를 표현식에서는 있는 경우도 있다 그래서 이 같은 일이 쉽지 않기 때문에 분석할 수 있도록 한 줄 기술서임을 시각적으로 포지셔닝하십시오.

var c = (a == b)
    ? AReallyReallyLongFunctionName()
    : AnotherReallyReallyLongFunctionOrStatement();

하지만 여전히 더 쉽게 볼 수 있는 것보다 몇 블록 what& # 39, if / 다른 상황을 잘.

루비 중에 한 가지 문제는 토론의 제거한다. 표준 kingdome. seattle. 한 줄 광고문 입니다.

do_something if (a == b)

및 멀티 라인:

if (a == b)
  do_something
  do_something_else
end

따라서 간단한 온라인 명령문입니다 있지만 이번 개편을 통해 단일 x-blade docname 검색하기를 경우 여러 줄 수 있습니다.

대부분의 다른 언어, 자바 가상 머신 (jvm) 에 사용할 수 있는 것은 아니다 (아직), disk_b_s10database 아파이크.

위의 기술서임을 쓸 어느 쪽이 옳은 길인지는 정해져 있지 않다. 스타일 많은 수락됨 코딩 있습니다. 하지만 저는 코딩 스타일을 유지하면서 포지셔닝하십시오 구성되어 전체 프로젝트 기간 동안. ie. 이 사업은 K&amp 사용하는 경우, R 스타일, 콩지름에 K&amp, R.

39, ve 항상 사용할 수 있는 경우를 제외하고는 항상 i& 브래킷에 I& # 39 m 검사 전에 이 같은 변수가 nulll 확보됨 캜 필수적이다.

이 경우, 내가 smartupdate it& # 39 의 선택해제합니다 it& # 39 에 있는 모든 것을 다음과 같은 발언을 한 것은 한 줄로

if (aString) free(aString);

The golden rule 에로남이네 작업할 때, 이러한 코딩 표준에 따라 기존 프로젝트.

39 m, 집에서 I& 때, 나는 두 형태.

첫 번째는 단일 라인:

if (condition) doThis();

그리고 두 번째 워크시트는 여러 선:

if (condition) {
   doThis();
}

Perl 로 간단한 테스트를 수행할 경우 가끔 이 형식으로 쓸 수 있습니다.

do_something if condition;

do_something unless condition;

정말 유용한 확인할 수 있는 인수만 시작할 때 서브루틴.

sub test{
  my($self,@args) = @_;

  return undef unless defined $self;

  # rest of code goes here

}

내가 사용하는 모든 기술서임을 중괄호 수립하였습니다 경우에만 최소 1 명이 필요합니다.

내가 always&quot 중괄호, &quot 따를 때 사용합니다. 선 등과 같은 아파라치크. 그러나, 이들을 생략할 수 있도록 한 줄에 I& # 39 번 내 스타일이 수정되었음 조건식의:

if(!ok)return;

39 m 의 중괄호, 여전히 모든 멀티스테이트먼트 책정안 표시되어도 I& 한다는 게 반드시:

if(!ok){

    do();

    that();

    thing();
}

Jason Plank
t3rse
그는 11년 전 댓글을 달았습니다
0

39 m, t, 비록 내가 i& don& # 39 의 스택 오버플로 기관 원 의심할 수 있는지 알고 있습니다.

이 더 좋아요

if (cond)
   {
   //statement
   }

하나만 가지고도 발표했다. 어쩔 수 없었다는 것을 확실히 알 수 있었을 경우, never planned on 협력했습니다 write something, 한 번 보고 그 코드를 사용하고, 다른 기반 부호화 판매업체에서 박으래도 있는모든 형식을 적용할 수 있습니다. 그러나 어떤 높여줍니까 추가 비용 당신이냐고 상행담관염이라고 분류 이 과정에서 비해 덜 걸리는 시간이 연간 최대 게시물로의 입력할 수 있습니다.

그래, 난 내 브래킷에 들여쓰려면 같은 수준으로 블록, 고쳐주렴.

Python 은 잘 작업자쪽에서 밀어맞춤 eventtest 블록. 문제는 논쟁의 여지가 있는 것과 같은 언어로.

내가 동의하는 경향이 있는 조엘 스폴스키 있는 문서 (prosupport 잘못된 코드를 여바바 잘못된) 한 다음 코드를 사용하여 예:

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

Foo 이제 운콘딧요널. 진짜 나쁜 느릅 나무!

난 항상 flfile. 브래킷에 의사 결정 명령문입니다. 이를 통해 코드 유지 관리 및 버그 발생 가능성이 높은 코드 덜 수 있습니다.

우리 보스가 결정이요 기술서임을 아무리 해도, 그렇게 만들어요 동일팔레트에 {} 이후 it& # 39 의 단일 발표했다. # 39 의 두 개의 추가 줄은 정말 귀찮은 it& 추가할 수 있습니다. 유일한 예외는 삼항 연산자를.

나는 내 코드 s 에 모니터합니다 것은 좋은 것 같아요, it& # 39 세로 방향 dell. 1200x1600.