코드에서 빈 줄을 어떻게 사용합니까?


31

중괄호 배치에 대해 이미 논의한 공백에 대해서는 몇 가지 언급이있었습니다.

나는 "논리적"그룹으로 함께 모아지는 것들을 분리하기 위해 빈 줄로 내 코드를 뿌리는 경향이 있으며 다음 사람이 방금 생성 한 코드를 더 쉽게 읽을 수 있기를 바랍니다.

실제로, 나는 내가 작성한 것처럼 코드를 구성한다고 말할 것입니다. 단락을 몇 줄 (10 줄보다 짧지 않게)으로 만들고 각 단락을 독립적으로 만드십시오.

예를 들면 다음과 같습니다.

  • 클래스에서는 다음 그룹에서 빈 줄로 구분하면서 함께 묶는 메서드를 그룹화합니다.
  • 주석을 작성해야하는 경우 일반적으로 주석 앞에 빈 줄을 넣습니다.
  • 방법에서, 나는 과정의 단계 당 하나의 단락을 만듭니다

대체로, 4/5 개 이상의 라인이 함께 클러스터링되는 경우는 거의 없습니다. 이는 매우 드문 코드입니다.

실제로이 공백을 사용하여 코드를 구성하는 데 실제로 사용하기 때문에 낭비하지는 않습니다 (실제로 들여 쓰기를 사용함에 따라).

예를 들면 다음과 같습니다.

for (int i = 0; i < 10; ++i)
{
    if (i % 3 == 0) continue;

    array[i] += 2;
}

나는 두 진술이 분명하고 뚜렷한 목적을 가지고 있기 때문에 그것을 명확히하기 위해 분리 될 가치가 있다고 생각한다.

그렇다면 실제로 코드에서 빈 줄을 어떻게 사용합니까?


6
if (i % 3 != 0) { <newline here> array[i] += 2; <newline here> }, 그러나 나는 당신의 요점을 본다 :)
Merlyn Morgan-Graham

이러한 유형의 질문은 건설적인 것이 아닙니다 . "yes"와 "no"의 두 가지 답변 만 바꿔서 쓸 수 있습니다.

1
더 좋은 질문은 어떻게 그리고 왜 빈 줄을 사용하는 것입니까? 나는 당신과 같은 방식으로 빈 줄을 같은 동기로 사용합니다.
도미니크 맥도넬

1
@Mark, @takeshin : 죄송합니다. 키워드의 "방법"을 잊어 버렸습니다. 우리 모두가 그것들을 사용하는 것이 분명합니다. 나는 사람들이 어떻게 사용했는지 보려고 노력했지만 (분리 수업, if / else 등 ...) 매우 일반적인 대답을 얻었습니다 : p
Matthieu M.

3
for (int i = 0; i < 10; i += 3) { <newline here> array[i] += 2; <newline here> }그러나 나는 당신의 요점을 본다 :)
Berin Loritsch 13:22의

답변:


87

항상

공백은 읽을 수있는 코드를 정리하는 데 중요합니다. 빈 줄 (또는 두 개)은 코드의 논리적 블록을 시각적으로 분리하는 데 도움이됩니다.

예를 들어, 레이아웃 및 스타일에 관한 Steve McConnell의 Code Complete, Second Edition 장에서 :

프로그램이 전혀 들여 쓰기가없는 경우보다 프로그램이 2-4 자리 공백 들여 쓰기 체계를 가질 때 이해력 테스트에서 20-30 % 더 높은 점수를 받았습니다.같은 연구에서 프로그램의 논리적 구조를 강조하거나 강조하지 않는 것이 중요하다는 것을 발견했습니다. 전혀 들여 쓰기되지 않은 프로그램에서 가장 낮은 이해 점수를 얻었습니다. 여섯 번째 공백 들여 쓰기를 사용한 프로그램에서 두 번째로 낮습니다. 이 연구는 2 ~ 4 개의 공간 들여 쓰기가 최적이라고 결론 지었다. 흥미롭게도, 실험에서 많은 피험자들은 점수가 낮더라도 6 칸 들여 쓰기가 작은 들여 쓰기보다 사용하기 쉽다고 생각했습니다. 6 개의 들여 쓰기가 만족스러워 보일 수 있습니다. 그러나 외관이 아무리 아름답더라도 6 칸 들여 쓰기는 읽기 어렵습니다. 이것은 미적 매력과 가독성 사이의 충돌의 예입니다.


12
누군가가 "그러나 추출 방법을 추출해야합니다!"라고 말하는 것을들을 수 있습니다. 단락은 추출 방법이 충분하지 않은 경우를위한 것입니다.
Frank Shearar

1
실험하기 쉽고 세로 공백이 더 나은지 여부를 확인하십시오. 자신에게 알려지지 않은 소스 파일을 가져 와서 빈 줄을 모두 제거한 다음 논리를 따르십시오. 적절한 들여 쓰기를해도 빈 줄은 우리에게 한입 크기의 덩어리로 물건을 볼 수있는 기회를주기 때문에 정신적으로 지칠 것입니다. 세로 공백이나 들여 쓰기를 많이 사용하지 않는 코드를 유지 관리해야하므로 코드를 추가하는 것이 자기 보존을위한 첫 번째 작업 중 하나였습니다.
Tin Man

2
100 % 동의합니다. 공백은 논리적 청크로 코드를 의도적으로 분할하는 데 사용될 때 유용합니다. 그러나 공백을위한 공백은 공백이없는 것만 큼 나쁩니다. 한 전직 동료는 실제 코드의 거의 모든 줄 뒤에 하나 이상의 빈 줄을 넣기를 좋아했습니다. 나는 쓸데없는 빈 줄을 제거하기 위해 백 스페이스를 몇 천 번 누르는 "리팩토링"시간을 엄청나게 보냈다.
Mike Spross

귀하의 입장을 뒷받침하기 위해 몇 가지 데이터를 추가했습니다. 다음을 참조하십시오 : meta.programmers.stackexchange.com/questions/1109/…
Jeff Atwood

2
그 데이터는 빈 줄과 들여 쓰기에 대해서만 아무 것도 말하지 않습니다.
Blorgbeard


13

나는하지만 나는 넣어서 그것을 문서화해야합니다

(This line intentionally left blank.)

줄에


1
주석이있는 흰색 선은 코드에서주의를 기울일 수 있습니다
JulioC

1
"이 줄은 의도적으로 비워 두었습니다"라고 말하는 많은 의견이 있습니다. 줄이 비어 있으면 의도적이거나 코드 검토를 통과하지 않았다고 가정 할 수 없습니까?
대안

43
어쩌면 나일지도 모르지만 OP가 농담을하고 있다고 가정했습니다.
JSB ձոգչ

7
IBM에서 일한 지 얼마나 되었습니까?
기 illa

12

예, 그러나 나는 그것을 남용하지 않습니다.

메서드 내부의 모든 코드 줄이 빈 줄로 구분되고 논리적 분리가 발생하는 곳에 두 개의 빈 줄이 사용되는 코드를 보았습니다. 그것은 내 의견으로는 읽기 쉽지 않습니다. 또한 다음과 같이 미친 정렬을하는 데 사용되는 공백을 보았습니다.

//Prot.   Return type                    Name                 Arg1        Arg2
//=====   ============================== ==================== =========== ========

private   int                            AMethodWithALongName(string s,   object o)
{
    ...
}

private   IDictionary<MyLongObject, int> SomethingCrazy      (string s)
{
    ...
}

protected void                           Foo                 (string str, object o)
{
    ...
}

수평 공백의 동일한 오용이 수직 공백에 적용될 수 있습니다. 다른 도구와 마찬가지로 현명하게 사용하십시오.


1
입문 수준의 대학 과정에서 몇 가지 개념을 이끌어내는 데 사용되는 것으로 보입니다. 실제로 전문가 환경에서 사용 되었습니까?
rjzii

1
@Rob : 큰 시스템의 프로덕션 코드에서 사용되었지만 주석 헤더가없고 해당 파일에서 다른 메소드 서명을 볼 수 없으므로 정렬이 나를 어지럽히기에 충분한 메소드 본문이 있습니다. 메서드 본문을 축소했을 때 공백의 "이유"를 볼 수있었습니다.
Allon Guralnek

헤더 또는 인터페이스 파일에서 작동 할 수 있습니다
Ming-Tang

따라서 들여 쓰기 체계를 작성한 사람은 클래스에 새 메소드를 추가하고 메소드 리턴 유형이 기존 리턴 유형 중 하나보다 길면 다른 모든 메소드에 대한 공백 들여 쓰기를 다시 작성합니다. 수업?
Mike Clark

@Mike, 고등학교에서는 자바 프로그래밍 북 (제목을 기억할 수 없음)을 사용했는데 이와 같이 수평 간격을 사용하지 말라고 현명하게 권고했습니다. 단순히 다시 계산해야 할 때 많은 시간을 낭비하기 때문입니다.
Matthew Flaschen

5

이런 식으로 코드를 작성하는 것에 대해 많은 비판을 받았습니다. 왜 아무도 이런 식으로하지 않는지 이해하지 못합니다.

가독성 긴 시간이 지난 후 프로젝트로 돌아 왔을 때 매우 중요하며 "코드를 읽는 다음 사람이 자신의 위치를 ​​알고있는 정신병자라면 항상 코드를 작성하십시오"라는 말을 들었습니다.


당신이 만들고있는 가정은 코드 압축을 풀면 가독성에 도움이된다고 가정합니다.
Jason Baker

Jason이 말한 것. 코드베이스로 돌아갈 때 가능한 한 화면 당 많은 LOC를 사용하여 빠르게 소화 할 수 있습니다. 누군가가 반 페이지의 공백을 넣으면 (또는 끔찍한 XML 스타일 주석 중 하나를 금합니다) 일시적으로 그것을 읽기 위해 임시로 다시 포맷 undo하고 작업을 수행하기 위해 몇 번 (템포 전쟁을하지 마십시오) 생산성으로 이어지지 않으므로 주석과 공백을 완전히 삭제하지는 않지만 대부분 선호합니다.
Inaimathi

텍스트의 벽은 읽기가 거의 불가능하지만 인간의 심리학은 그것을 거부하는 경향이 있습니다. 비슷한 문장을 그룹화하는 데 시간을내어 동일한 변수를 조작하는 코드 줄을 그룹화하는 것도 좋습니다. 나는 그것이 모든 것을 선호한다고 생각하지만,이 사업에서 수행 된 일은 결코 빨리 끝나서는 안된다고 생각합니다.
브라이언 해링턴

5

나는 항상 소프트웨어를 작성하지는 않지만 명확하게하기 위해 빈 줄을 사용합니다.


4
나는 종종 하드웨어를 쓴 다음 인쇄합니다. 훨씬 저렴합니다.
Tim Post

5
Equis는 농담합니까?
Paperjam

@Tim 사실,별로 재미 있지 않습니다 : 3D 프린팅 ;) (그리고… 훌륭합니다, 우리는 여기에 모든 영어 원어민이 아닙니다 :).
takeshin

1
@takeshin 나는 누구에게도 재미를 느끼지 않았고 3D 인쇄를 언급하고있었습니다. 예는 주석이 농담에 의미있는 동안, 나는 .. 잘 .. 귀중한 : 당신은 또한, @Paperjam 잘 인쇄에 대한 농담에서 주석 사실입니다 :) 의도를 잘못 해석 할 수 있다고 생각
팀 포스트

나는 소프트웨어를 쓰지 않고 그것을 굳힌다.
mlvljr

5

나는 코드를 최대한 명확하게하기 위해 노력하고 있으며, 공백은 종종 그 노력에 유용한 도구이다. 그러나 리팩토링을 잊지 마십시오.

  • 클래스에서는 다음 그룹에서 빈 줄로 구분하면서 함께 묶는 메서드를 그룹화합니다.

여러 관련 멤버가 있으므로 새 클래스의 후보입니다.

  • 주석을 작성해야하는 경우 일반적으로 주석 앞에 빈 줄을 넣습니다.

코드가 주석을 작성하기에 불분명 할 때마다 주석이 필요하지 않을 정도로 코드를 명확하게 만들기 위해 리팩터링 할 수 있는지 묻습니다.

  • 방법에서, 나는 과정의 단계 당 하나의 단락을 만듭니다

각 "단락"에 대해 하나의 방법을 만들어 보시겠습니까?

수업에서 여러 가지 방법으로 끝나는 경우 새 클래스 추출에 대한 위의 참고 사항을 참조하십시오.


5

예. 파일을 시각적으로 쉽게 스캔 할 수 있습니다. 무엇보다도 주석이 어떤 줄과 함께 표시되는지가 더 명확 해집니다.

Some code here
// Which line does this comment go with?
More code here

// It's pretty clear which line this comment goes with
More code here

Still more code here

4

나는 빈 줄을 아껴서 일관되게 사용하며, 꾸준히하는 것보다 꾸준히 더 중요합니다. 하나:

  • 모든 코드 줄이 빈 줄로 다음 줄과 구분되면 빈 줄이 너무 많습니다.
  • 빈 줄이 어디에 있는지 쉽게 알아볼 수있는 운율이나 이유가 없다면, 산만하고 보통 너무 많습니다.
  • 함수가 너무 커서 빈 줄이 많이 필요한 경우 너무 큽니다.
  • 코드 블록 앞뒤에 빈 줄이 두 개 이상 필요한 경우 심각한 오류가 발생합니다.
  • 함수 사이에 빈 줄이 둘 이상 있으면 빈 줄이 너무 많을 수 있습니다.

그것의 대부분은 끔찍하게 논쟁의 여지가 없습니다; 다음은 무엇 일지 모릅니다. 줄 끝에 열린 괄호가있는 K & R 표기법은 종종 빈 줄로 표시됩니다. 나는 개인적으로 줄 끝의 괄호를 싫어하고 괄호가 의미없는 의미 (IMNSHO)를 만든 후에 빈 줄과 혼합합니다. 열린 괄호를 다음 줄에 두십시오. 대부분 빈 줄이 있습니다 (그리고 더 읽기 쉬운 코드 인 IMNSHO). 줄 끝에서 K & R 버팀대를 사용해야하는 경우 빈 공간이없는 세로 공간을 낭비하지 마십시오.

// I don't like this
if (something == anotherthing) {
    print ...
    update ...
}

// I much prefer this
if (something == anotherthing)
{
    print ...
    update ...
}

// I loathe this - not least for its inconsistent spacing
if (something == anotherthing) {

    print ...
    update ...
}

// I loathe this too, for its absurd waste of vertical space
if (something == anotherthing) {

    print ...
    update ...

}

3

가장 읽기 쉽고 가장 놀라운 것을 쓰십시오.

function validEmail($addr) {
    $regex = "/.../";   
    return preg_match($regex, $addr);
}

이 함수는 12 줄의 문서 주석이 필요하지 않습니다.

실제로 주석이 필요하지 않습니다.

또는 빈 줄.

그들은 본질을 떨어 뜨릴 것입니다.


1
허용되는 주소를 설명하는 상단의 주석이 좋을 것입니다. 정규식을 사용하여 이메일 주소를 확인할 수 있습니까?
kevin cline

3

함수 안에서? 드물게

명확한 다른 블록이 있으면 새로운 기능으로 리팩토링됩니다. 가치가없는 경우가 거의 없습니다.

나를 위해 함수 내부의 빈 줄은 가장 잘못된 "모범 사례"중 하나입니다.


2

자주

유사하게 처리되는 논리적 코드 블록에 사용하십시오. 다른 단계를 수행하고 있음을 나타 내기 위해 주석을 추가하면 추출 방법입니다.

좋은 공백

{
    int x = computeX();
    x += ADJUSTMENT_FACTOR_X;

    int y = computeY();
    y += ADJUSTMENT_FACTORY_Y;

    setPosition(x, y);
}

잘못된 공백

{
    //Open a connection
    String serverAddress = lookupAddress();
    Connection connection = openConnection(serverAddress);
    connection.login(user, password);


    //Go get stuff from the server
    item1 = connection.get(1);
    item2 = connection.get(2);

    //Close connection
    connection.close();

    //log data
    log(item1);
    log(item2);

    //Update client
    gui.updateView(item1, item2);        
}    

vs

{
    Connection connection = openConnection();
    updateData(connection);
    closeConnection(connection);
    logUpdate();
    updateGui();
}

vs

{
     updateDataFromServer();
     logUpdate();
     updateGui();
}

4
Bad Whitespace 예제가 나쁜 것으로 간주되는 것의 단축 버전이라고 가정합니다. 현재 길이에서는 분할 할 필요가 없습니다.
Allon Guralnek

1
나는 왜 나쁜가 나쁜지, 왜 당신이 VS를

5
그 의견 중 어느 것도 얘기 할 필요가 없으며, 왜 세계에서하고자 한 추출물 connection.close()closeConnection(connection)
대안

주석이있는 코드 블록은 블록이 짧고 적은 한 추출 된 방법보다 낫습니다. 추출 방법은 무료가 아닙니다. 코드 지역 비용이 있습니다.
Craig Gidney

그리고 당신은 단지 확인 item1item2방법을 통해 통신하는 전역 변수? !!
TMN

2

공백을 사용할뿐만 아니라 명확성을 위해 중괄호를 사용합니다.

이것들이 잠재적으로 기능적이라고 말할 때 사용하는 괄호.

code
{
    code
    code
    code
    code
}
{
    code
    code=code
    code
    code

    code()
    code()
}

2

한 번에 코드 전체에 빈 줄을 자유롭게 뿌렸습니다. 요즘에는 좀 더 아끼는 경향이 있습니다. 나는 이것이 스티브 Yegge가 여기 에서 말한 것의 일부라고 생각합니다 .

내가 지금까지 그린 장면이 왜 때때로 코드를보고 즉시 싫어하는지 이해하는 데 도움이되기를 바랍니다. n00b라면 경험 많은 코드를 살펴보고 현대 소프트웨어 엔지니어링의 필수 요소를 전혀 배우지 않은 사람이 작성한 흠 잡을 데없는 헛소리라고 말할 수 있습니다. 당신이 베테랑이라면 n00b 코드를보고, 술을 마시고 밤새 인턴이 쓸 수있는 지나치게 주석 처리 된 장식용 보풀이라고 말할 것입니다.

고착 점은 압축 공차입니다. 경력을 통해 코드를 작성할 때, 특히 매우 다른 언어와 문제 영역에 걸친 코드 인 경우 코드 압축에 대한 내성이 증가합니다. 큰 글로 된 어린이 책을 읽는 것에서부터 더 작은 글씨와 더 큰 단어를 가진 점점 더 복잡한 소설에 이르기까지 진보와 다르지 않습니다.

...

압축에 대한 내성이 높은 프로그래머는 실제로 많은 스토리 텔링에 방해가됩니다. 왜? 코드베이스를 이해하려면 가능한 많은 코드를 머리에 넣을 수 있어야합니다. 복잡한 알고리즘 인 경우, 베테랑 프로그래머는 화면에서 모든 것을보고 싶어합니다. 즉, 빈 줄 수와 인라인 주석 (특히 코드가하는 일을 단순히 반복하는 주석)의 수를 줄입니다. 이것은 n00b 프로그래머가 원하는 것과 정확히 반대입니다. n00bs는 한 번에 하나의 문장이나 표현에 중점을 두어 모든 코드를 시야 밖으로 이동시켜 집중할 수 있도록 소리를 크게 내고자합니다.

나는 그에게 기본적으로 동의합니다. 너무 많은 공간을 확보하는 것보다 한 화면에서 가능한 많은 코드를 얻을 수 있도록 코드를 압축하는 것이 훨씬 좋습니다. 결코 빈 줄을 사용 해서는 안된다는 말은 아닙니다 . 그것은 당신이 만들려고하는 그룹화가 가독성을 엄청나게 높이 지 않는다면 좋은 것보다 더 해를 끼치 지 않는다고 생각합니다.


2

명예 교수가 훌륭한 조언 두 가지를 주었다

  1. 공백은 무료입니다
  2. 용지 앞쪽으로 튀어 나온 스테이플을 사용하지 마십시오.

1

내 경험 법칙은 다음과 같습니다.

  1. 어제 작성한 코드를 읽는 데 어려움이 있다면 아마도 방법을 추출해야합니다.

  2. 클래스 정의가 읽기에 너무 길면 모듈 / 인터페이스 / 개체를 추출해야합니다.

  3. 메소드 정의 : 라인 추가

  4. 모듈 / 클래스 정의 : 두 줄 추가


1

나는 공백을 단락과 같은 방식으로 생각하고 싶다. 하나의 아이디어에 기여하는 선을 함께 그룹화합니다.

새로운 아이디어 나 같은 아이디어의 새로운 측면을 시작한다면, 새로운 단락을 시작합니다.

명령형 코드에서는 하나의 응집 된 작업을 수행하는 작업을 그룹화합니다. 선언적 코드에서 아이디어에 대한 하나의 응집력있는 설명을 설명하는 코드를 그룹화합니다.

영어로하는 데 아무런 문제가 없습니다 (일부 사람들은 단락에 끔찍합니다).


1

빈 줄은 필자의 의견으로는 필수입니다. 나는 그것들을 사용하여 다른 논리적 코드 블록을 분리합니다. 코드를 읽을 수있게 만듭니다. 읽을 수있는 코드는 좋은 코드입니다.)

이상적인 코드 조각은 각 논리 블록이 빈 줄로 구분되고 주요 논리가있는 각 블록 위에 주석이 있습니다.

물론 사람들이 여러 곳에서 빈 줄을 여러 개 추가하여 그것을 끝내면 매우 자극적입니다.


1

선언과 코드를 분리하기 위해 함수 / 메소드 내에서 공백 만 사용합니다.

일부 로직을 구현하는 코드의 서브 블록을 분리하기 위해 일부 라인이 필요하다고 생각되면 다른 기능 / 개인 메소드에 있어야합니다. 너무 큰 오버 헤드를 만들지 않는 것은 컴파일러에 달려 있습니다.

일반적으로 peusdo 코드에서 :

def function(arg1, argn, ...)
    INITIALIZERS

    CODE
    BLOCK_START
        INITIALIZERS

        CODE
    BLOCK_END
    CODE
end

쓸모없는 공백이 보이면 나는 보통 울었습니다.


그것은 C-ish처럼 보입니다. C ++ 코딩 표준은 객체를 초기화하지 않고 선언하지 않는 것이 좋습니다. 이는 다음과 같은 사용을 금지합니다 : /
Matthieu M.

@Matthieu M : OK, DECLARATIONS를 INITIALIZERS로 바꿉니다. 그러나 나는 블록 중간에 이니셜 라이저를보고 싶지 않습니다. 그것이 필요하다면, 그것은 더 작은 범위를 필요로하는 것이므로 개인 방법 / 기능이 필요합니다.
haylem

0

공백은 매우 중요합니다.

E = MC 2 와 같은 복잡한 코드를 작성하는 괴상한 사람들은 그들의 프로그래밍 기술을 잘 보여줍니다.

이제 6 개월을 앞당기 고 오전에는 오전 2시이며 6 개월 동안 보지 못한 시스템은 E = MC 2 의 바로 그 라인에서 깨졌습니다 . 이것은 디버깅이 거의 불가능합니다 ... 모두가 놀라워합니다.

코드가 다음과 같다고 가정 해 봅시다.

See Dick
See Jane
See Dick and Jan

오전 2시이고 코드가 손상된 경우 한 눈에 세 번째 줄은

See Dick and Jane

문제 해결됨.

결론 ... 공백을 사용하십시오.


1
음 ...이 예제들 중 어느 것도 당신의 요점을 뒷받침하지 않습니다. 개인적으로 E = MC2는 E = MC 2보다 읽기 쉽다고 생각합니다 (결론은 공백을 사용하는 것이 었습니까?). 아, 그리고 아직 고등학생이 아니라면, "대단한 것"보다 동의하지 않는 사람들을 언급하는 더 좋은 방법을 생각 해낼 수있을 것입니다.
Jason Baker

@Jason-좋은 단어의 나쁜 선택. E = MC2는 훨씬 더 읽기 쉽습니다. 그것은 당신이 당신의 웹 사이트 YAGNI와 SYNDI에서 이야기하고있는 것과 같습니다. jasonmbaker.com/tag/programming
Michael Riley-AKA

0

많은 사람들이 언급했듯이 빈 줄은 코드를 더 쉽게 읽을 수 있도록합니다. 그러나이 표준을 적용하는 일부 언어가 있습니다. 내 머리 꼭대기에서 생각할 수있는 것 (빈 줄이 아니라 적절한 들여 쓰기)은 Python입니다.


0

동의합니다. 공백을 같은 방식으로 사용합니다. 그러나 공백을 사용하여 메소드를 너무 많은 부분으로 나누는 것을 발견하면 해당 코드를 여러 메소드로 리팩터링해야 할 수도 있습니다. 메소드에 논리 섹션이 너무 많으면 메소드를 테스트하기가 더 어려울 수 있습니다.


0

나는 그것들을 사용하여 코드를 논리 단위로 분리합니다. 나는 빈 줄을 사용하지 않은 코드 샘플을 거의 보지 못했습니다. 물론 난독 화는 제외됩니다.


0

Psychopath의 답변이 가장 좋지만 다음 사람이 바보라고 가정하고 그 사람을 당신이 있다고 가정하고 잘못된 것을 증명하고 싶을 것으로 대체합니다.

가독성에 중요한 것은 주석을 사용하는 것입니다. 주석 블록을 사용하여 각 함수 또는 서브 루틴을 열고 일반 텍스트, 기능, 기능, 인수 및 예상 결과 (오류 조건 목록 포함)를 설명합니다. 그렇다면 무엇을 의도하고 /하거나 설계했는지에 대해서는 의문의 여지가 없습니다. 그것이 달성하는 것은 다를 수 있지만, 그것은 더 아래로 내려갑니다.

저는 너무 많은 코더들이 코드에서 "수리"를 할 것이라고 생각하거나 단순히 신경 쓰지 않을 것이라고 생각합니다.


0

빈 줄이 중요합니다. 그러나 여는 중괄호에 전체 빈 줄을 낭비하면 화면에서 볼 수있는 코드의 양이 줄어 듭니다. 해야한다:

for (int i; i < 10; ++i)
{  if (i % 3 == 0) continue;

   array[i] += 2;
}

(중괄호 '{'를 'for'와 같은 줄에 넣는 것을 시작하지 마십시오.


2
예. 한 화면에서 전체 기능을보고 싶습니다. 여는 중괄호를 자체 줄에 넣지 마십시오. 이것이 들여 쓰기입니다.
KevBurnsJr

자체 줄에 중괄호의 요점은 코드 블록을 명확하게 정의하는 것입니다. 중괄호 뒤에 코드 줄을 추가하는 것이이 종교가 유지되는 유일한 이유를 망치고 있습니다! 'for'와 같은 줄에 넣을 수도 있습니다.
Gary Willoughby

0

예. 가독성을 위해. 때로는 작성하지 않은 코드에 빈 줄을 넣기도합니다. 빈 줄을 통해 논리적으로 그룹화 할 때 코드를 이해하는 것이 더 쉽다는 것을 알게되었습니다.


0

문자를 쓸 때와 마찬가지로 코드 블록 사이에 빈 줄을 사용해야합니다.

예를 들어, 함수 사이 또는 루프를 완료 할 때 함수 내부에서 ...

유지 보수를 해야하는 사람들은 깨끗한 코드에 감사드립니다.)


0

Microsoft StyleCop에서 권장하는 공백을 사용합니다. 가독성과 일관성을 제외하고 (소규모 클래스와 함께) 코드를 올바르게 배치하면 팀의 여러 사람들이 같은 영역에서 작업 할 때 병합을 훨씬 쉽게 관리 할 수 ​​있습니다.

그것이 내 상상인지 확실하지 않지만 diffing 도구는 깔끔하게 배치 할 때 병합 할 때 동등한 코드가 시작되고 끝나는 위치를 인식하는 데 더 나은 작업을하는 것처럼 보입니다. 코드를 멋지게 배치하는 것은 합병하는 기쁨입니다. 좋아, 그것은 거짓말이었다. 그러나 최소한 고통은 관리 할 수있는 수준으로 유지된다.


0

전체 파일이 아닌 빈 줄은 절대 사용하지 마십시오. 코드에 중단이 없다고 말하는 것은 아닙니다.

 code;
 //
 morecode;

빈 줄은 작업 할 코드 섹션을 여는 데 사용되며 편집기에 이전 / 다음 빈 줄로 이동하는 몇 개의 단축키가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.