다음 예와 같이 괄호 없이 단일 결정 및 조치를 지원하는 언어의 경우:
if (var == true)
doSomething();
어떤 방식으로 작성하는 것이 바람직할까요? 괄호를 항상 사용해야 하나요, 아니면 개별 개발자의 선호도에 맡겨야 하나요? 또한 다음 예제에서와 같이 코드 블록의 크기에 따라 이러한 관행이 달라지나요?
if (var == 1)
doSomething(1);
else if (var > 1 && var < 10)
doSomething(2);
else
{
validate(var);
doSomething(var);
}
내가 추천하는
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.
난 항상 중괄호를 사용하는 경향이 있다. 몇 가지 미묘한 버그 시작했던 오프하도록 다음과 같은 항목을 통해 볼 수 있습니다.
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();
}
하지만 한 줄짜리 문장이 많다면요:
if (cond1)
DoFirst();
elseif (cond2)
DoSecond();
else
DoElse();
이 더 깔끔해 보이지만(더미 메서드 이름이 마음에 들지 않는다면;), 그건 제 생각일 뿐입니다.
이는 루프 구조체 등에도 적용됩니다:
foreach (var s as Something)
if (s == someCondition)
yield return SomeMethod(s);
또한 이 규칙은 .NET에 더 적합할 수 있는 규칙이라는 점도 고려해야 합니다(Java 엿보기를 좋아하는 사람들은 첫 번째 중괄호를 if와 같은 줄에 두는 것을 좋아한다는 점에 유의하세요).
이 기간동안 있었다, 하지만 내 7 년 동안 1 백악 경험 부족이 아니라 실제로 볼 수 없는 코드 신 I& # 39, ve 누구나 실수를 저지르지 않을 수 없다, 괄호 추가 코드를 추가할 때 블록의 doesn& # 39 중괄호. , # 39 의 that& 정확하게 제로 시간.
그리고 전, 아니, 그 이유는, t get to it 위스크래커스 wasn& # 39 는 braces" 모두라뇨 항상 ";).
따라서 실제 갖고 싶은 게 아니라 정말 정직한 질문 - 확보하십시오 다운보테스: 그게 판매업체에서 실제로 그렇게 됐나?
(편집: # 39, 무서운 이야기 좀 더 명확하게 이해할 수 있도록 충분한 i& 잘 알고 있는 것이 특징이다. 실제로 유능한 프로그래머가 c 판매업체에서 있습니까?)
때마다 포락선으로 사용할 수 있습니다. 그들은 code& 향상시키십시오 # 39, 가독성 및 분리하십시오 혼란 및 부족한 발생할 수 있는 몇 안 되는 것이다.
같은 물건을 쓰기 시작합니다. < pre>; < code>; 만약 = true 펑스타 ();
만약 B = " Test"; { 펑스트브 (); } < /code>; < /pre>;
너 찾고 있는 won& 컴파일러와의 바인딩됩니다 다니엘을 이상한 버그 # 39, 너희는너희가 못하며창조된 찾기 어렵다는 것을 이해하지 노력하고 있었다.
기본적으로 한 틀렸다니까 편안하던가요 먹어서나 everytime 삼성벤처투자와 스틱 찾을 수 있도록 한다. 나는한다 사용하여 믿고 블록 데이메터스 (& # 39, & # 39, & # 39, & # 39}, {;) 최대한 갈 길이라고.
내가 don& # 39, t 시작할 수 있지만, 내가 바라는 건 뭔가 이와 관련 질문 안에 다른 언급을 전달하십시오 정신적 쥬스 것입니다. 1) 를 사용하여 브래킷에 결정을 내린 바 있다. 어디에 배치합니까 오프닝 브래킷에서? 이 같은 줄에 문 또는 그. 밀어맞춤된 브래킷에 방관하겠나? < pre>; < code>; 만약 A = {거짓값 이것저것 //calls 및 } //or 만약 B = " BlaBla"; { 이것저것 //calls 및 } //or 만약 C = B { 이것저것 //calls 및 } < /code>; < /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();
중괄호, 이를 방지하기 위해 항상 you& # 39 에서 사용하는 일종의 버그, re 가능성이 더 높다.
루비 중에 한 가지 문제는 토론의 제거한다. 표준 kingdome. seattle. 한 줄 광고문 입니다.
do_something if (a == b)
및 멀티 라인:
if (a == b)
do_something
do_something_else
end
따라서 간단한 온라인 명령문입니다 있지만 이번 개편을 통해 단일 x-blade docname 검색하기를 경우 여러 줄 수 있습니다.
대부분의 다른 언어, 자바 가상 머신 (jvm) 에 사용할 수 있는 것은 아니다 (아직), disk_b_s10database 아파이크.
>. 이 클래스의 명령문입니다 다른 경우 합니다. >. 형식은 다음과 같습니다. >. >. >. if (조건) { >. 명령문입니다. >. } >. >. if (조건) { >. 명령문입니다. >. } else { >. 명령문입니다. >. } >. >. if (조건) { >. 명령문입니다. >. {} else if (조건) >. 명령문입니다. >. } else { >. 명령문입니다. >. }
[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 / 다른 상황을 잘.
The golden rule 에로남이네 작업할 때, 이러한 코딩 표준에 따라 기존 프로젝트.
첫 번째는 단일 라인:
if (condition) doThis();
그리고 두 번째 워크시트는 여러 선:
if (condition) {
doThis();
}
내가 동의하는 경향이 있는 조엘 스폴스키 있는 문서 (prosupport 잘못된 코드를 여바바 잘못된) 한 다음 코드를 사용하여 예:
if (i != 0)
bar(i);
foo(i);
Foo 이제 운콘딧요널. 진짜 나쁜 느릅 나무!
난 항상 flfile. 브래킷에 의사 결정 명령문입니다. 이를 통해 코드 유지 관리 및 버그 발생 가능성이 높은 코드 덜 수 있습니다.
이 더 좋아요
if (cond)
{
//statement
}
하나만 가지고도 발표했다. 어쩔 수 없었다는 것을 확실히 알 수 있었을 경우, never planned on 협력했습니다 write something, 한 번 보고 그 코드를 사용하고, 다른 기반 부호화 판매업체에서 박으래도 있는모든 형식을 적용할 수 있습니다. 그러나 어떤 높여줍니까 추가 비용 당신이냐고 상행담관염이라고 분류 이 과정에서 비해 덜 걸리는 시간이 연간 최대 게시물로의 입력할 수 있습니다.
그래, 난 내 브래킷에 들여쓰려면 같은 수준으로 블록, 고쳐주렴.
Python 은 잘 작업자쪽에서 밀어맞춤 eventtest 블록. 문제는 논쟁의 여지가 있는 것과 같은 언어로.