중괄호가 자체 줄에 나타나야합니까? [종료]
On 2월 14, 2021 by admin답변
Python을 사용하고 논쟁을 완전히 피하십시오.
댓글
답변
중괄호의 위치는
메타 데이터
구성 가능해야합니다. 프로그래머가 IDE에서. 이렇게하면 작성자에 관계없이 모든 코드의 성가신 중괄호가 동일하게 보입니다.
댓글
- 전적으로 동의합니다. 데이터가 아닌 ‘ 프레젠테이션입니다.
- 문제는 모든 사람이 자신 만의 설정을하게하면 커밋이 완료 될 때 작업이 매우 빠르게 지저분해진다는 것입니다.
- li>
- @Andy : ‘ 정확히 말하면 IDE가 모양을 변경하지만 IDE에서만 가능합니다! 실제 소스는 건드리지 않습니다. 버전 제어를 위해 중괄호 설정을 일반적인 상황으로 변환하는 후크를 추가하여 모든 사람이 동일한 방식으로 코드를 확인할 수 있습니다.
- @klaar 모든 최신 IDE i ‘ 탭을 공백으로 변경하고 중괄호를 자체 줄 또는 ” 열기 ” 라인; 나는 ‘이 경우 출처가 ‘ 인 이유를 잘 모르겠습니다. 이것이 제 댓글의 이유입니다. 일반적으로 개발자 설정에 따라 IDE에 의해 변경됩니다. 즉, 커밋 중에 ‘ 중괄호가 자신의 줄로 이동함에 따라 소음인 많은 변경 사항을 볼 수 있습니다. 따라서 누군가가 한 실제 변경 사항을 숨 깁니다.
- @Andy : ‘ 공백 및 중괄호와 관련된 이러한 불일치를 균일 한 표준으로 변환하는 후크를 사용할 가능성은 없습니다. 당신이 설명한 소음 문제를 피하기 위해 uppon commit? 어느 쪽이든 적절한 버전 관리 시스템은 공백이나 기타 무의미한 것들과 같은 사소한 것들을 초월해야합니다.
답변
이 예에서 실수를보기가 어렵 기 때문에 첫 번째를 선호합니다.
if (value > maximum); { dosomething(); }
이 예보다
/ p>
if (value > maximum); { dosomething(); }
; {
는 ;
그래서 나는 그것을 알아 차릴 가능성이 더 큽니다.
댓글
- 당신은 좋은 주장을하지만 개인적으로 이것은 5 년간의 프로그래밍에서 한 번 저에게 일어났습니다. ‘ 왜 실행되지 않았는지 알 수 없었고 ‘ SO에 게시했습니다. 누군가가 재빨리 세미콜론을 지적했습니다.하지만 1 줄을 줄 이도록 압축 될 때마다 읽기가 더 어려워집니다.
- “; {“는 윙크하는 심술 궂은 얼굴이나 콧수염이있는 사람 일 수도 있습니다.
- +1 훌륭한 예 : 아주 미묘한 실수, 쉽게 간과. 이것을 보여주는 레이아웃에 대해서도 생각이 들었습니다.
- 물론 괜찮은 IDE는 빈 제어문에 플래그를 지정하고 괜찮은 컴파일러는 경고를 발행합니다.
- @Dunk 유일한 결함은 최근에 많은 사람들이 (JavaScript, PHP 등) 통역 언어를 사용하여 많은 ” 프로그래머 “는 ‘ 더블 라떼의 컴파일러를 알지 못합니다.
답변
상황에 따라 다릅니다.
Javascript 또는 jQuery로 코딩하는 경우 첫 번째 형식을 사용합니다.
jQuery(function($) { if ($ instanceOf jQuery) { alert("$ is the jQuery object!"); } });
하지만 C #으로 코딩하는 경우 두 번째 형식을 사용합니다. 이것이 C #에서 수행하는 표준 방식이기 때문입니다.
public int CalculateAge(DateTime birthDate, DateTime now) { int age = now.Year - birthDate.Year; if (now.Month < birthDate.Month || (now.Month == birthDate.Month && now.Day < birthDate.Day)) age--; return age; }
참고 예제는
if (you.hasAnswer()) you.postAnswer(); else you.doSomething();
C #으로 작성할 수 있습니다.
댓글
- 그런 많은 언어로 쓸 수 있습니다. 진술입니다. 첨가! 🙂
- ” 프레임 워크 디자인 가이드 라인 “에 따르면 ” 표준 방식 “은 여는 중괄호를 같은 줄 (즉, 첫 번째 양식)에 배치하는 것입니다. ‘ …
- @Uwe : 아마도 요. 그러나 Microsoft는 모든 MSDN C # 예제에 대해 ” 정렬 중괄호 ” 접근 방식을 채택했으며 ‘는 Visual Studio에 구워 졌으므로 …
- @Uwe : That ‘ s Cwalina ‘ s 책과 ‘ 그보다 훨씬 더 많은 이름이 붙여졌습니다. MSDN의 FDG는 그것에 대해 말할 것이 없습니다. 또한 프레임 워크 디자인 가이드 라인에서 C # 코딩 연습에 대해 언급하는 이유가 궁금합니다.
- 사실 자바 스크립트에서 같은 줄에 중괄호를 넣어야합니다. 중괄호가 자체 줄에 있으면 오류가 발생할 수 있습니다. 예를 들어 encosia.com/ …
답변
1의 약간의 변형을 선호합니다)
if (you.hasAnswer()) { you.postAnswer(); } // note the break here else { you.doSomething(); }
이유
-
항상 줄에 중괄호를 넣으면 가독성이 떨어집니다. 화면에 일정량의 소스 코드 만 넣을 수 있습니다. 대괄호 스타일 2)는 많은 중첩 루프와 조건문이있는 힙 알고리즘을 고통스럽게 길게 만듭니다.
-
하지만
else
를 시작하고 싶습니다.if
와else
가 시각적으로 함께 속하기 때문에 새 줄에 표시됩니다.else
앞에 “괄호가 있으면 무엇에 속하는지 찾기가 훨씬 더 어렵습니다. -
3 ) 자격이 상실됩니다. 괄호를 생략하고 잊어 버리면 어떤 나쁜 일이 발생할 수 있는지 우리 모두 알고 있습니다.
댓글
- 나는 내가 일하는 곳에서 이것을 보았다. ‘ 흥미 롭습니다.
-
else
필요한 경우 줄을 사용하고 / 또는 if 블록과 else 블록 사이에 빈 줄을 넣어 상황을 덜 복잡하게 보이게합니다. 대괄호 스타일 # 2는 조건에서 행동을 분리하는 것 외에는 아무것도하지 않습니다. 즉, 제가 가장 좋아하는 것은 확실히 python입니다. ‘ s no bracket style 🙂 - 화면의 코드 줄 수를 최대화하는 것이 중요하다면 그냥하지 마세요 모두 개행으로. ‘ 한 화면에 많은 줄을 표시 할 수 있습니다. 나는 읽는 동안 멈추고 생각하게 만드는 어떤 것도 선호하지 않습니다. 더 읽기 쉬운 나의 정의. 중괄호를 사용하면 마음이 그들을 무시합니다. 중괄호가 없으면 마음이 멈추고 제어 블록을 정렬해야합니다. 긴 일시 정지가 아니라 그럼에도 불구하고 일시 정지합니다.
- 예, 함께 속한다면 {및}도 마찬가지고}은 별도의 줄에 있으므로 {는 별도의 줄에 있어야합니다. 라인도. ” 화면에 특정 양의 소스 코드 만 표시 할 수 있습니다. ” 그리고 그 ‘ 3)이 ” 자격 실격 “이되는 정확한 이유는 전혀 선택이 없습니다. 10 년 동안 함께 작업 한 후 3) 새로운 코드 줄을 추가 할 때 대괄호를 추가하는 것을 잊지 않았으며 그 누구도 알고 있지 않습니다. 코드를 제대로 읽을 수없는 ‘ 사람에게 코드를 조정해야한다면 어디에서 끝나나요? 일부 코드 리더가 이해하지 못할 수 있으므로 특정 언어 기능 사용을 중지 하시겠습니까?
답변
어떤 책의 저자가 다음과 같은 형식의 코드를 원한다는 것을 읽었습니다.
if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); }
하지만 게시자의 공간 제약으로 인해 다음을 사용해야했습니다.
if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); }
이제 그게 사실인지는 모르겠지만 (더 이상 찾을 수 없기 때문에) 후자의 스타일은 책에서 매우 널리 퍼져 있습니다.
개인적으로는 대괄호를 선호합니다. 다음과 같이 별도의 줄 :
a) 새 범위를 나타냅니다.
b) 불일치가있을 때 발견하기가 더 쉽습니다 (오류를 강조하는 IDE에서는 문제가되지 않음).
코멘트
- … 두 번째 옵션은 두 가지 요점을 모두 용이하게합니다 (중괄호 / 들여 쓰기 콤보). 🙂
답변
아, One True Brace Style .
거룩한 W에 필요한 모든 것이 있습니다. ay-심지어 예언자 (Richard “my way or the highway”Stallman).
그 사람은 너무 많은 일에 대해 틀렸지 만 GNU는 중괄호에 관해서는 옳습니다.
[업데이트] 나는 빛을 보았고 지금은 Allman
댓글
- ‘ LISP 코드를 모델링하는 것 외에는 GNU 스타일의 요점을 볼 수 없습니다. 별로 유익하지 않은 일이 많은 것 같습니다.
- GNU 스타일을 사용하는 사람은 아무도 모릅니다. 1TBS 끝까지.
- ‘ 블록 당 들여 쓰기 수준보다 더 나쁜 것은 할 수 없습니다. 물론 lisp 스타일을 제외하고는 말할 것도 없습니다.
- 중괄호 스타일의 링크에 +1. 당신의 스타일이 무엇이든, 많은 훌륭한 사람들이 당신에게 동의하지 않는다는 것을 보여줍니다.
- @RobertHarvey 추가 작업이 없다면 ‘ 코드를 작성하거나 올바르게 구성하는 데 적합한 도구입니다. 이점은 훨씬 더 읽기 쉬운 코드입니다. 괄호 안의 모든 오류를 매우 빠르게 볼 수 있으며 하위 블록을 무시하면서 코드 만 쉽게 읽을 수 있습니다.
답변
두 번째 예, 저는 가독성이 매우 중요합니다. 다른 방법으로 블록을 차단하면 참을 수 없습니다. = (
댓글
- 연구에 따르면 코드베이스가 화면 높이를 초과하면 ‘ 간단한 코드를 더 쉽게 읽을 수 있습니다.
- @ weberc2 , 해당 연구 논문에 DOI를 제공 할 수 있습니까?
답변
간단한 답변 : 디버깅이 더 쉬운 것은 무엇입니까?
// Case 1: void dummyFunction() { for (i = 0; i != 10; ++i) { if (i <= 10) std::cout << "i is: " << i << "\n"; std::cout << 10 - i << " steps remaining\n"; // Some hard work here // which is really hard // and does take some screen estate } else std::cout << "We"ll never get there"; } } // COMPILER ERROR HERE // Case 2: void dummyFunction() { for (i = 0; i != 10; ++i) if (i <= 10) { std::cout << "i is: " << i << "\n"; std::cout << 10 - i << " steps remaining\n"; // Some hard work here // which is really hard // and does take some screen estate } else std::cout << "We"ll never get there\n"; } } // COMPILER ERROR HERE
어떤 경우에 먼저 문제를 진단 했습니까?
개인적인 선호도에 대해서는별로 신경 쓰지 않습니다. 스타일, 화이트 스미스 및 알 포함). 코드를 읽는 능력과 디버그 .
A “폐기물 공간”인수에 s, 나는 그것을 사지 않는다 : 나는 어쨌든 프로그램을 더 명확하게하기 위해 논리 그룹 사이에 빈 줄을 추가하는 경향이있다 …
코멘트
- 주로 짧은 코드 블록이기 때문에 ‘ 둘 다 디버그하기 쉽습니다. 들여 쓰기가 일관되어 실제 코드 블록을 쉽게 시각화 할 수 있습니다.
- @Htbaa : 참 🙂 그렇다면 왜 귀찮게합니까?
- @MatthieuM. 첫 번째 블록은 나에게 더 의미가 있습니다. 왜냐하면 함수 서명, for- 문과 if- 문 사이의 줄 바꿈 (두 번째 블록에 있음)은 그들이 관련이 없다고 믿게 만들지 만 분명히 그들은 그렇지 않습니다 ‘ t. 빈 줄은 관련없는 코드 비트를 구분하는 것입니다. ‘ 다른 코드 줄과 가까운 코드는 실제로 관련이 있음을 의미합니다. 물론 이것은 모두 ‘ imo ‘이지만 귀하의 요점이 무엇인지 궁금합니다. 편집 : 또한 적절한 IDE는 중괄호가 누락 된 것을 감지하고 코드 해석시 오류를 표시합니다.
- 이 두 코드 섹션이 완전히 다르다는 점을 지적하고 싶습니다. 코드의 여러 지점에서 컴파일러 오류가 발생합니다. 첫 번째는 ” else ” 및 마지막 곱슬 머리에 컴파일러 오류가 있습니다. 두 번째는 마지막 곱슬에만 컴파일러 오류가 있습니다.
Answer
아무도 눈치 채지 못할 것입니다. 그러나 이것이 바로 중괄호가 조건부와 같은 동일한 줄 에 속하는 이유입니다 (매우 긴 조건부 제외, 그러나 그것은 가장자리 case) :
C에서 다음은 유효한 구문입니다.
while(true); { char c; getchar(); //Wait for input }
빨리!이 코드는 무엇을합니까? ” 입력을 요청하는 무한 루프 “, 당신은 틀렸어요!”입력조차하지 않습니다. while(true)
에서 잡 힙니다. 끝에 세미콜론이 있습니다.이 패턴은 실제로는되어야하는 것보다 더 일반적입니다. C에서는 블록의 시작 부분에 변수를 선언해야하므로 새로운 변수가 시작되었습니다.
한 줄의 코드는 생각입니다. 중괄호는 조건부 또는 루프를 포함하는 생각의 일부입니다. 따라서 같은 줄에 속합니다.
댓글
- 이것은 지금까지 내가 본 K & R 스타일에 대한 최고의 주장이며 나머지는 오늘 웃을 수 있습니다. ‘ 코드 접기를 지원하는 IDE 시스템. 이는
;
블록 끝을 지원하는 C 스타일 언어에만 적용됩니다. 이것이 내가 IMHO가 구식이고 Go 언어가 그것을 증명하는이 블록 엔딩 시스템을 경멸하는 이유이기도합니다. 이 시나리오에서는 아니지만이 문제를 여러 번 보았습니다. 일반적으로 성명에 무언가를 추가하고 잊어 버리려는 경우에 발생합니다.
답변
나는 첫 번째 방법. 더 깔끔한 IMO처럼 보이며 더 콤팩트해서 제가 좋아합니다.
편집 : 아, 세 번째입니다. 더 작고 깔끔하기 때문에 가능한 한 최고로 좋습니다.
p>
답변
다음과 같이 작성할 수 있습니다.
you.hasAnswer() ? you.postAnswer() : you.doSomething();
받는 사람 질문에 답하세요; 나는 자체 줄에 중괄호를 선호했지만 브라우저의 자동 세미콜론 삽입으로 인한 버그에 대해 생각할 필요가 없도록 자바 스크립트에 이집트 스타일을 사용하기 시작했습니다. 그리고 Eclipse에서 Java를 코딩 할 때 기본 중괄호 스타일과 싸우거나 구성하는 데 관심이 없었기 때문에이 경우에도 이집트를 사용했습니다. 이제 둘 다 괜찮습니다.
댓글
- 그렇게 사용하려면
postAnswer()
및doSomething()
는 삼항 연산자에 대한 값을 반환해야합니다. 이는 종종 그렇지 않습니다. void (값 없음)를 매우 잘 반환 할 수 있습니다. 또한는 일부 변수에 할당되어야합니다.
답변
거의 모든 응답 여기에 “무엇을 하든지 한두 가지를 고수하십시오”에 대한 몇 가지 변형이 있습니다.
그래서 잠시 생각해 보았고 그다지 중요하지 않다는 것을 인정해야했습니다. . 누구든지 다음 사항을 따르기 어렵다고 솔직하게 말할 수 있습니까?
int foo(int a, Bar b) { int c = 0; while(a != c) { if(b.value[a] == c) { c = CONST_A; } c++; } return c; }
다른 사람에 대해 잘 모르겠습니다 …하지만 정신적으로 전혀 문제가 없습니다. 스타일 사이를 앞뒤로 전환합니다. 코드가 무엇을했는지 알아내는 데 몇 분이 걸렸지 만 C와 유사한 구문을 무작위로 입력 한 결과입니다. 🙂
그다지 겸손하지 않은 의견으로는 여는 중괄호는 코드 가독성과 거의 관련이 없습니다. 위에 나열된 몇 가지 코너 사례에서 하나 또는 다른 스타일이 차이를 만들지 만 대부분의 경우 빈 줄을 현명하게 사용하면 문제가 해결됩니다.
FWIW, 작업중인 코딩 스타일은 약간 더 구조화 된 양식 1과 수정 된 양식 3입니다. (C ++)
// blank line is required here if (x) { //This blank line is required y = z; } // blank line is required here too, unless this line is only another "}" if (x) y = z; //allowed if (x) y = z; // forbidden
양식 2를 강력하게 선호하는 사람들이이 버전의 양식 1을 찾을 수 있는지 궁금합니다. 빈 줄이 더 강한 시각적 구분을 제공하기 때문에 더 좋습니다.
주석
- 예에서 알 수 있듯이 들여 쓰기는 가독성을 위해 중괄호보다 훨씬 중요합니다. 실제로 일부 언어는 들여 쓰기를 구문을 중첩하는 유일한 방법으로 만듭니다!
- 좋습니다. 솔직히 일관성없는 예제를 읽기가 어렵습니다. 정말 어렵지는 않지만 일관성이있었습니다.
- Almo에 동의합니다. ” 정말 어려운 일이 아닙니다. ” . ” 확실히 더 어려운 경우입니다. “, 어렵지 않더라도. 그렇다면 왜 일을 더 어렵게 만들까요? 사람들이 제시하는 ” 장난감 ” 예에서는 물론 차이가 거의 없습니다. 내 경험상, 내가 다른 사람으로부터 불쾌한 코드를 물려 받아 그들이 방법 1을 사용했을 때, 논리를 따를 수 있도록 계속해서 방법 2로 바꾸는 것이 매우 자주 필요합니다. 그것이 자주 필요하다는 사실 때문에; 어떤 방법이 더 낫고 이해하기 쉬운 지에 대한 질문에 자동으로 답해줍니다.
- @Dunk : 이처럼 관련없는 세부 사항을 바꾸면 눈에 띄게 개선 될 코드를 헤아릴 수 없습니다.
- @jkerian -분명히 당신은 프로젝트 나 회사를 오랫동안 떠난 다른 사람들로부터 많은 코드를 상속받지 못한 것 같습니다. ‘ 수년 간의 경험이있는 사람이 그런 상황에 처해 있지 않다는 것을 ‘ 아닙니다. 그러나 다시 말하지만 ‘ 모두의 업무 상황이 다릅니다. 또한 ” 공식적인 ” 코드 검토를 수행해야하는 경우 서식을 지정하면 상당한 차이가 있습니다. 코드를 자연스럽게 읽을 수 있다는 것은 매우 중요합니다.물론 중괄호와 일치하는 생각을 잠시 멈추고 생각할 수는 있지만 프로세스 속도가 느려집니다. 한 가지 방법은 일시 중지가 필요하지 않고 다른 방법은 일시 중지가 필요하지 않습니다. 그래서 ‘ 다른 선택이 추천 될 수있는 이유를 ‘ 알 수 없습니다.
답변
아직 제기되지 않은 것이 놀랍습니다. 두 번째 방법은 블록을 더 쉽게 선택할 수 있기 때문에 선호합니다.
중괄호가 같은 열과 자체 줄에서 시작하고 끝나는 경우 여백에서 선택하거나 열 0에 커서를 놓을 수 있습니다. 일반적으로 마우스 선택 또는 그보다 적은 수로 더 넓은 영역에 해당합니다. 키보드 선택으로 키 입력.
원래 조건문과 같은 줄에서 중괄호로 작업했지만 전환했을 때 작업 속도가 빨라졌습니다. 물론 밤낮은 아니지만 조건문 옆에 중괄호를 사용하면 약간 느려질 수 있습니다.
댓글
- 저와 같은 이전 타이머는 중괄호가 어디에 있든 블록을 선택하기 위해 세 번의 키 입력을 사용합니다.
답변
저는 개인적으로 두 번째 방법을 좋아합니다.
그러나 제가 보여줄 방법은 최고의 직업 안정을 가져 오기 때문에 제 생각에 가장 좋은 방법입니다! 제 대학의 한 학생이 숙제에 대한 도움을 요청했는데 이것이 그의 코드가 어떻게 생겼는지입니다. 전체 프로그램은 하나의 블록처럼 보였습니다. 흥미로운 점은 그가 만든 프로그램의 버그 중 95 %가 중괄호가 맞지 않는 것입니다. 나머지 5 %는 중괄호가 일치하면 분명했습니다.
while(1){ i=0; printf("Enter coded text:\n"); while((s=getchar())!="\n"){ if(i%1==0){ start=(char*)realloc(input,(i+1)*sizeof(char)); if(start==NULL){ printf("Memory allocation failed!"); exit(1);} input=start;} input[i++]=s;} start=(char*)realloc(input,(i+1)*sizeof(char)); if(start==NULL){ printf("Memory allocation failed!!!"); exit(1);} input=start; input[i]="\0"; puts(input);
댓글
- 나쁨, 나쁨 , 나는 끔찍하고 끔찍한 예를 의미합니다. 문제는 중괄호가 아닙니다! ‘ 미친 들여 쓰기입니다!
- @Martinho Fernandes 중괄호와 들여 쓰기를 함께 사용한다고 생각했습니다 …
- 반드시 그런 것은 아닙니다. .. 위에서 적절한 들여 쓰기를 한 다음 중괄호 스타일을 무작위로 전환하면 ‘ ‘ 이해할 수 있습니다.
li>
답변
개인적으로 선호하는 방법은 첫 번째 방법입니다. 아마도 이것이 제가 PHP를 처음 배운 방법이기 때문일 것입니다.
한 줄로 된 if
문장의 경우, 저는
if (you.hasAnswer()) you.postAnswer();
you.postAnswer();
가 아니라 you.postAnswer(this.AnswerId, this.AnswerText, this.AnswerType);
와 같이 훨씬 더 길어집니다. 아마도 fi로 되돌릴 것입니다. 첫 번째 유형 :
if (you.hasAnswer) { you.postAnswer(this.AnswerId, this.AnswerText, this.AnswerType); }
절대 줄 바꿈을 사용하지 않으며 성명.
if (you.hasAnswer()) you.postAnswer(); else you.doSomething()
이론적 가능성이지만 제가 사용해 본 적이 없습니다. 이것은
if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); }
답변
로 바꿔야합니다. 첫 번째 방법입니다.
두 번째 줄을 보면 사용하지 않은 줄 (마지막 닫는 중괄호 외에 중괄호 만있는 줄)으로 인해 연속성을 깨는 것처럼 느껴집니다. 코드. 보통 코드 목적이나 이와 같은 구분을 의미하는 빈 줄에 특별한주의를 기울여야하기 때문에 빨리 읽을 수 없습니다. 그러나 어떤 경우에도 “이 줄은 중괄호에 속합니다”(의미 만 반복합니다) 여하튼, 텍스트를 쓸 때와 마찬가지로 … 단락 앞에 빈 줄이 있으면 (단락 변경의 이중 기호) 단락 시작 부분에 들여 쓰기를 추가하는 것은 불필요합니다. 적절하게 들여 쓰기 할 때 중괄호에 줄을 낭비 할 필요가 없습니다.
또한 이미 언급했듯이 화면에 더 많은 코드를 넣을 수 있으며 그렇지 않으면 약간의 비생산적입니다.
답변
플랫폼 / 언어 / 컨벤션에 따라 다름
자바 :
void someMethod() { if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); } }
C #
void someMethod() { if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); } }
C :
void someMethod() { if (you_hasAnswer()) { you.postAnswer(); } else { you_doSomething(); } }
저는 Java 사용자가 C # 코드에서 자신의 스타일을 사용하는 것이 싫습니다.
댓글
- C 스타일 al 나를 짜증나게했다. 일관성을 유지하세요!
답변
내가 말할 수있는 것은 “당신이 방법 # 3의 팬이라면”입니다. , 당신은 지구상의 모든 IDE 코드 포맷터로부터 박해를 받게 될 것입니다.
답변
첫 번째 방법을 사용하는 이유는 더 간결하고 화면에 더 많은 코드를 허용합니다. 저는 중괄호를 짝 짓는 데 문제가 없었습니다 (조건을 추가하기 전에 항상 if
문과 함께 작성합니다. , 대부분의 환경에서는 일치하는 중괄호로 이동할 수 있습니다.)
중괄호를 시각적으로 쌍으로해야 만약 했다면 두 번째 방법을 선호합니다. 그러나 한 번에 더 적은 코드를 허용하므로 더 많이 스크롤해야합니다. 그리고 적어도 저에게는 중괄호를 깔끔하게 정렬하는 것보다 코드를 읽는 데 더 큰 영향을 미칩니다. 나는 스크롤을 싫어한다. 그런 다음 단일 if
문을 스크롤해야하는 경우 너무 커서 리팩토링이 필요합니다.
그러나; 무엇보다도 가장 중요한 것은 일관성입니다. 둘 중 하나만 사용하세요. 둘 다 사용하지 마세요!
답변
12 세에 처음 프로그래밍을 배우고있을 때 중괄호를 썼습니다. 다음 줄은 Microsoft 코딩 자습서가 이와 같기 때문입니다. 그 당시에는 4 칸의 TABS로 들여 쓰기도했습니다.
몇 년 후 Java와 JavaScript를 배웠고 같은 줄에 괄호가 더 많이 표시되어 변경했습니다. 또한 공백 2 개로 들여 쓰기 시작했습니다.
설명
- +1, -1. 편집자가 탭 길이를 임의의 길이로 조정할 수 있으므로 탭으로 들여 쓰기를하지 않는 이유는 무엇입니까? 그렇지 않으면 8에서 실제 들여 쓰기를 좋아하는 많은 사람들이 코드를 저주합니다.
답변
중괄호를 정렬하지만 공간을 낭비하지 않는 네 번째 옵션이 있습니다.
if (you.hasAnswer()) { you.postAnswer(); i.readAnswer(); } else { you.doSomething(); }
유일한 문제는 대부분의 IDE의 자동 포맷터가이 문제를 해결하지 못한다는 것입니다.
댓글
- …이 문제를 겪는 대부분의 프로그래머처럼
- 끔찍한 것 같습니다. 상단에 줄을 삽입하거나 상단 줄을 제거하려면 추가 노력을 기울여야합니다. ‘ 줄을 삭제하고 계속 진행할 수는 없습니다. 중괄호를 다시 삽입 할 수 있습니다.
- 이건 멋지네요! 🙂 첫 번째 스타일보다 낫습니다!
- 분명히 이름도 있습니다. Horstman Syyle 은 wikipedia 에 언급되어 있습니다. 저는 ‘와 같은 코드베이스로 작업했습니다. 이것은 ‘ 정말 나쁘지 않습니다. 사용합니다.
답변
여러분이 프로젝트를 진행하지 않는 한 프로젝트 관리자는 해당 프로젝트를 작업하는 모든 프로그래머가 코딩하는 동안 따라야하는 코딩 제약 또는 일부 표준을 설정했습니다.
개인적으로는 첫 번째 방법을 선호합니다.
그리고 세 번째 방법으로 보여주고 싶은 것을 얻지 못 했나요?
그게 잘못된 방법 아닌가요? 예를 들어 다음과 같은 상황을 생각해보십시오.
if (you.hasAnswer()) you.postAnswer(); else you.doSomething();
이제 누군가가 if 블록?
이 경우 세 번째 방법을 사용하면 컴파일러에서 구문 오류가 발생합니다.
if (you.hasAnswer()) you.postAnswer1(); you.postAnswer2(); else you.doSomething();
댓글
- 누군가가 와서 그랬다면 더 나쁠 것입니다. if (you.hasAnswer ()) you.postAnswer (); 그렇지 않으면 you.doSomething (); you.doSomethingElse (); -‘ 눈이 쉽게 넘어갈 수 있고 컴파일러가 이겼 던 미묘한 버그에 대한 레시피입니다. ‘도 도움이되지 않습니다.
- @FinnNk : 맞아요!
- 누군가가 다른 문장을 추가하고 싶다면 중괄호를 직접 넣을 수 있습니다. 그럴만 한 가치가있는 프로그래머라면 누구나 알아낼 수있을 것입니다.
- 그의 세 번째 방법이 잘못되었다고 말하고 싶었습니다.
- @Robert Harvey, I ‘ 매우 숙련 된 코더가 기존 코드를 수정할 때 중괄호를 추가하지 못하는 것을 보았습니다. 문제는 들여 쓰기가 중괄호보다 의미에 대한 단서가 훨씬 더 강력하다는 것입니다 (특히 여러 개의 중괄호 스타일이 있기 때문에). 따라서 ‘ 들여 쓰기는 예상 한 것과 같습니다.
SyntaxError: not a chance