doortts / blog

0 stars 0 forks source link

들여쓰기 100년 전쟁, Tab vs Space, 2글자 vs 4글자 #249

Open doortts opened 12 years ago

doortts commented 12 years ago

@doortts (doortts) 님이 작성한 게시글입니다. ---

doortts | 2012-06-19 화요일 오전 12:8 | 이생각 저생각 | 원본

spacechange.png

코딩 컨벤션을 정하는 것은 굉장히 단순하면서도 굉장히 어려운 일인것 같습니다. 별것 아닌것 같은 규칙 하나가 개발에 대해 짜증을 만들게 하기도 하고, 편하고 즐겁게 만들어 주기도 하니까요.

그 중에서도 매우 오랫동안 논란의 끝에 있는 것 하나는 

띄어쓰기를 Tab으로 할꺼냐? 아니면 Space 할거냐? 

2자리로 할거나 4자리로 할거냐?

의 논쟁입니다.

이건 텍스트 에디터를 사용해서 프로그래밍이라는 걸 하기 시작한 이후부터 시작된 이른바 100년 전쟁에 가까운 논쟁입니다.

저 먼 옛날 Tab이 시작되었던 터미널과 Emacs, vi부터 이야기를 시작할 수도있겠지만, 그런건 좀 지나가고, tab, untap정도는 자연스럽게 처리되는 상식적인 수준의 모던 에디터들을 사용한다는 가정하에서 이야기 해 보겠습니다.

그 중 에서도 특히 Tab과 Space 중 어느 것을 들여쓰기 문자, 띄어쓰기 문자로 사용할 것인가에 대해 이야기를 집중해 보겠습니다. 

(좋은 에디터들은 Tab과 띄어쓰기, 줄 이어쓰기에 각각 다른 간격을 줄 수 있는 시절이니까요)

엄격주의자(rigorist)적인 측면에서 좀 더 이야기를 해보겠습니다.

우선 들여쓰기(indentation)는 문맥(context)가 깊어지거나 이어주는 다음 줄이 현재 줄보다, 혹은 현재줄이 윗 줄보다 얼만큼 안쪽으로 들여쓰여질 것인가를 나타냅니다. 그리고 띄어쓰기는 말 그대로 간격을 얼만큼 줄 것인가에 대한 이야기로 엄격히는 이 둘은다릅니다. 실제로 들여쓰기와 띄어쓰기를 구분해서 지정할 수 있는 에디터들이 있습니다. (대표적으로 Jetbrains의 intellij를 베이스로 하는 에디터들이 그렇습니다)

뭐, TAB은 '띄여쓰기'에 쓰이는 가장 대표적인 문장기호입니다. 단순히 간격을 띄운다고 생각하면 됩니다.

사실 이렇게 까지 구분해서 쓰는 건 조금 강박스럽습니다.

일반적인 보통사람 개발자 수준에서 이야기를 해 보겠습니다.

예전엔 8자리 띄워쓰기를 하는 경우도 있었지만, 지금은 보통 4자리 띄어쓰기가 기본입니다.

그러다 최근에는 스크립트 랭귀지 계열을 필두로 2자리 띄어쓰기가 많이 쓰이는 추세입니다.

4space.png

4자 띄어 쓰기

2space.png

2자 띄어쓰기

흔한 이유는 web개발시 html tag가 기본적으로 들여쓰기가 심하게 일어나기 때문이기도 하고,

클로저(closure)를 사용하는 언어들에서는 특히 들여쓰기가 많이 일어나기 때문에 줄당 평균 글자수를 확보하는 차원에서 2자리 띄어쓰기를 선호하는 경우가 많습니다.

하지만 시대의 흐름을 떠나 C, JAVA, C# 계열은 4자리 띄어쓰기가 기본으로 굳건히 자리잡고 있습니다.

전 4자리를 선호합니다. 왜냐하면 줄당 평균 글자수를 강제로 줄여주는 효과가 있기 때문에, 좀더 간결하게 작성하도록 유도해 주고, 폰트나 화면이 작은 경우 윗줄이나 아랫줄이 코드를 읽는데 눈이 덜 혼란스럽기 때문입니다.

이건 어디까지나 '타인의 취향'에 가까운 부분이니 그러려니 해주세요. : )

그럼 탭(Tab) 문자 vs 공백(space)문자 중에서는 어떤 것을 사용하는 것이 좋을까?

마찬가지로 취향의 문제에 가까운 부분이긴 합니다.

다만, 띄어쓰기가 언어의 핵심요소인 언어들이 있기 때문에, 공백과 탭을 섞어서 쓰는건 어느 편이든 공통적으로 금해야 한다고 말합니다.

ㅎ.. 얼릉 마무리 하고 집에가고 싶어졌습니다. 다음은 각각에 대한 선호자들의 논리입니다.

한번 보시고 이 글을 읽으시는 분은 어떤 편을 선호하시는지 알려주세요.

Tab vs Space

Tab이 좋다


- 공백 4자리는 탭에 비해 4배의 공간을, 2자리를 쓴다해도 2배의 전산 자원을 탭에 비해 소모한다. (이게 전 세계적으로 따져보면 어마어마한 양의 전산 자원 낭비, 마그네틱 소재의 낭비기 된다)

Space가 좋다


  예)

var name    = 'John'

    , address = 'Chicago'

    , tel     = '012-12310213';

4글자 vs 2글자

4글자 띄어쓰기

----- 

2글자 띄어쓰기


기타 계열


참고...

An Eternal Holy War http://www.jwz.org/doc/tabs-vs-spaces.html

tabs or spaces? http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=3978

Tabs Versus Spaces http://c2.com/cgi/wiki?TabsVersusSpaces

그 외 수많은 포럼들...

Comments

전 4자띄기..지만 필기할때나 프로그래밍 할때나 내어쓰기가 나을 거 같아요 ㅋㅋ

ㅋㅋ | 2012-07-07 토요일 오후 10:58

--

전 이클립스가 기본으로 만들어주는대로......

오터넷 | 2012-10-11 목요일 오후 10:4

--

텝이 좋습니다. 텝으로 통일하면 에디터 설정으로 2-space로 할지 4-space 변경이 쉽습니다. 하지만, 기존 코드가 있는 경우 (ex. Kernel, Android 등) 거기에 맞추는게 우선이겠죠.

Mei | 2013-06-13 목요일 오후 1:28

--

--- attachments --- 4space.png 2space.png spacechange.png