중괄호가 자체 줄에 표시되어야합니까? [닫은] you.postAnswer(); } else {

중괄호가 자체 줄에 있어야합니까? 당신이 그것에 대해 어떻게 생각하십니까?

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

아니면

if (you.hasAnswer())
{
    you.postAnswer();
}
else
{
    you.doSomething();
}

또는

if (you.hasAnswer())
    you.postAnswer();
else
    you.doSomething();

건설하십시오! 이유를 설명하고 경험을 공유하고 사실과 참고 자료로 뒷받침하십시오.



답변

내가 학생이었을 때 같은 줄에 중괄호를 사용하여 줄이 적었고 코드는 더 적은 페이지에 인쇄되었습니다. 한 줄에 인쇄 된 단일 괄호 문자를 보는 것은 성가신 일입니다. (환경, 종이 낭비)

그러나 큰 응용 프로그램을 코딩 할 때 중괄호 만있는 일부 행을 허용하면 ‘그룹화’느낌을 고려하여 저렴합니다.

어떤 스타일을 선택하든 상관없이 자신의 두뇌가 관련 코드 조각 에서 여러 스타일을 처리하는 오버 헤드가되지 않도록 일관성을 유지 하십시오 . 다른 시나리오 (위와 같은)에서 다른 스타일을 사용하는 것이 좋다고 말하면 높은 수준에서 컨텍스트를 전환하는 것이 더 쉽습니다.


답변

세번째 방법은 절대로하지 말아야합니다.

중괄호를 훑어 보면 처음으로 몇 번의 키 입력을 줄일 수 있지만 다음에 오는 코더는 블록이 없음을 알지 않고 else 절에 무언가를 추가합니다.

다른 사람을 위해 코드를 작성하십시오.


답변

오랫동안 나는 그들이 올바른 선택을함으로써 얻을 수있는 이익이 그에 대한 논쟁 비용 보다 훨씬 훨씬 먼 만큼 가치가 같거나 매우 비슷 하다고 주장 했다.

일치하는 것이 중요 하지만,. 그래서 동전을 뒤집어 코드 작성을 시작하겠습니다.

프로그래머가 이전과 같이 변화에 저항하는 것을 보았습니다. 극복 해! 나는 경력에서 여러 번 전환했습니다. C #에서는 PowerShell과 다른 스타일도 사용합니다.

몇 년 전에 저는 입력을 요청한 다음 결정을 내리고 모든 코드 기반에서이를 시행하기로 결정한 팀 (~ 20 명의 개발자)과 함께 일했습니다. 우리는 1 주일을 결정할 것이다.

많은 신음 소리와 눈 굴림. “나는 더 나아지기 때문에 내 방식이 마음에 듭니다”.

우리가 질문의 세부 사항을 연구하면서 누군가가 같은 문제를 해결하는 방법을 물었습니다.

void MyFunction(
    int parameterOne,
    int parameterTwo) {
    int localOne,
    int localTwo
}

매개 변수 목록이 끝나는 위치가 즉시 명확하지 않으며 본문이 시작됩니다. 다음과 비교하십시오 :

void MyFunction(
    int parameterOne,
    int parameterTwo)
{
    int localOne,
    int localTwo
}

우리는 전 세계 사람들이이 문제를 어떻게 처리했는지에 대해 약간의 독서를했으며, 개방형 괄호 뒤에 빈 줄을 추가하는 패턴을 발견했습니다.

void MyFunction(
    int parameterOne,
    int parameterTwo) {

    int localOne,
    int localTwo
}

시각적 인 휴식을 취하려면 중괄호를 사용하십시오. 그러면 시각적 휴식도 일관되게됩니다.

편집 : K & R 사용시 ‘추가 공백 라인’솔루션에 대한 두 가지 대안 :

1 / 함수 본문과 다르게 함수 인수를 들여 쓰기

2 / 첫 번째 인수를 함수 이름과 같은 행에 놓고 새 행의 추가 인수를 첫 번째 인수에 맞 춥니 다.

예 :

1/

void MyFunction(
        int parameterOne,
        int parameterTwo) {
    int localOne,
    int localTwo
}

2 /

void MyFunction(int parameterOne,
                int parameterTwo) {
    int localOne,
    int localTwo
}

/편집하다

나는 여전히 다른 고려 사항보다 일관성이 더 중요하다고 주장하지만, 우리가 확립 된 선례 가 없다면 괄호로 넘어가는 길입니다.


답변

기본 규칙은 다음과 같습니다.

  1. 프로젝트의 기존 코딩 표준을 따르십시오.
  2. 코딩 표준이없고 다른 사람이 소유 한 기존 코드베이스를 편집하는 경우, 원하는 코드의 양과 상관없이 기존 코드의 스타일과 일치해야합니다.
  3. 그린 필드 프로젝트를 진행중인 경우 다른 팀원과 논의하고 공식 또는 비공식적 인 코딩 표준에 대한 합의에 도달하십시오.
  4. 단독 개발자로서 그린 필드 프로젝트를 수행하는 경우 자신의 생각을 구성한 후, 무자비하게 일관성을 유지하십시오.

외부 제약이없는 경우에도 기존 (일반적으로 사용되는) 코딩 표준 또는 스타일 지침을 찾아이를 따르는 것이 가장 좋습니다 (IMO). 자신만의 스타일을 굴리면 몇 년 후에 후회하게 될 가능성이 큽니다.

마지막으로, 기존 스타일 체커와 코드 포맷터를 사용하여 구현 / 구현할 수있는 스타일이 수동으로 “강제”되어야하는 것보다 낫습니다.


답변

첫 번째 방법의 이점은 더 수직적으로 작기 때문에 화면에 더 많은 코드를 넣을 수 있기 때문에 선호합니다. 두 번째 방법을 선호하는 유일한 주장은 여는 및 닫는 괄호를 더 쉽게 페어링 할 수 있다는 것입니다. 그러나 대부분의 IDE에는 키보드 단축키가 있으며 여는 괄호를 닫는 대신 엉뚱한 문장입니다. 대괄호를 사용하면 동일한 들여 쓰기 수준에서 닫는 대괄호를 “블록의 시작”식 (있는 경우)에 연결할 수 있으므로 블록의 시작 위치를 쉽게 결정할 수 있습니다.

앞의 for / while / if 구문이 이미 시각적으로 블록의 시작을 나타내는 경우 대괄호로만 전체 줄을 낭비 할 이유가 없습니다.

즉, 블록의 끝과 들여 쓰기 구조를 시각적으로 나타내는 데 무언가가 필요하기 때문에 닫는 괄호는 자체 줄에 있어야한다고 생각합니다.


답변

나는 선호한다

if (you.hasAnswer())
{
    you.postAnswer();
}
else
{
    you.doSomething();
}

위에

if (you.hasAnswer()) {
    you.postAnswer();
} else {
    you.doSomething();
}

you.postAnswer();한눈에 쉽게 읽고 찾을 수 있기 때문 입니다. 두 번째 방법으로, 그것은 위의 선과 혼합되어 you.hasAnswer()내 눈에 더 집중하여 읽을 수있게합니다.


답변

첫 번째 방법을 선호합니다. 괄호는 완전히 별도의 라인 가치가 없습니다.

문제는 중괄호가 중요하지 않다는 것입니다. 그것들은 단지 구문 쓰레기입니다 . 이것은 코드가 무엇인지, 코드의 목적과 구현 방식을 이해하는 데 절대적으로 필요하지 않습니다. 화면 공간이 부족하여 운영자를 시각적으로 그룹화 할 수없는 구식 C 유사 언어에 대한 찬사 일뿐입니다.

중괄호가없는 언어 (Python, Haskell, Ruby)가 있습니다. 이것은 중괄호가 쓰레기임을 확인하기 만하며 가능할 때마다 줄을 가질 자격이 없어야합니다.

if (you.hasAnswer()){
    you.postAnswer();
}else{
    you.doSomething();
}