들여쓰기를 할 때 왜 space가 tab보다 권장될까? 🤔
저는 프로그래밍을 할 때 들여쓰기가 필요하면 tab
을 이용합니다. Python 코드를 어떻게 구상할지에 대한 스타일 가이드인 PEP8을 읽다 들여쓰기를 할 때에는space
가 tab
보다 권장된다는 가이드라인이 있어서 소개해 드리려고 합니다.
Spaces are the preferred indentation method.
Tabs should be used solely to remain consistent with code that is already indented with tabs.
Python disallows mixing tabs and spaces for indentation.
들여쓰기에는 space
를 이용하는 것이 권장되고, tab
은 기존에 프로그램의 들여쓰기가 tab으로 되어 있어서 일관성을 유지해야 하는 경우에 한정해 써야 한다고 합니다. 또, tab
과 space
의 혼용은 불가하다고 강조되어 있군요.
놀랍게도 space
가 tab
보다 권장되는 경향은 다른 프로그래밍 언어인 Java에서도 존재합니다.
Tab characters are not used for indentation.
Google Java Style Guide
그렇다면 왜 많은 사람들은 tab보다 space를 쓰는 코드 컨벤션을 권장하는 것인지 차근차근 알아보겠습니다.
찾아보니 들여쓰기를 어떻게 할 것인가는 프로그래머들 사이에서 꽤나 오랫동안 펼쳐진 논쟁이더군요.
프로그래머들은 크게는 tab
으로 들여쓰기를 할 것인가, space
로 들여쓰기를 할 것인가 진영으로 나뉘고, 세부적으로는 또 tab
을 얼만큼의 너비로 할 것인지, space
는 몇 개를 이용할 것인지 등으로 나뉘기도 합니다.
그럼 각 진영의 주장을 살펴보겠습니다.
tab
과 space
는 모두 1회당 1byte의 용량을 차지합니다. 보통 프로그램에서는 2칸, 4칸 혹은 8칸의 들여쓰기를 사용하는데, 들여쓰기를 위해서 tab
은 한 번만 치면 되지만, space
는 여러 번 쳐야하므로 tab
을 이용하는 것이 용량이 더 절약됩니다.
비슷한 이유로 tab은 한 번만 쳐서 들여쓰기를 할 수 있기 때문에 space보다 편리합니다.
파이썬을 제외하고 많은 프로그래밍 언어에서 들여쓰기는 오로지 코드의 가독성을 높여주기 위해 만들어진 장치입니다. 단어 사이를 분리하기 위해 만든 키인 space
와 달리, tab
키는 들여쓰기를 하기 위해 만들어진 키입니다. 따라서 들여쓰기를 할 때에는 tab
을 이용해야 합니다.
tab
을 이용하면 에디터마다 설정값대로 임의로 들여쓰기가 되는 반면, space
로 들여쓰기를 하게 되면 에디터가 달라도 코드는 같은 형식으로 보입니다. 따라서 에디터 환경이 달라지더라도 들여쓰기 형식을 따로 신경쓰지 않아도 되는 것이죠.
아래에 보여드리겠지만, 들여쓰기로 tab
을 이용하는 프로그래머보다 space
를 이용하는 사람들이 훨씬 많습니다. 프로그래밍은 협업하는 경우가 많으므로, 결국 코딩을 할 때 space
를 이용하는 것이 코드의 일관성을 갖추기 쉽습니다.
이 주제와 관련된 재미있는 깃허브 리포가 있어 가져와보았습니다.
깃허브 전체 커밋에서의 코드 컨벤션을 분석한 프로젝트인데요. 많은 프로그래머들이 tab
대신 space
를 이용하는 것을 알 수 있습니다.
들여쓰기를 할 때 왜 space가 tab보다 권장될까? 🤔
💡 에디터에 독립적이므로, space
를 이용하는 것이 코드의 신뢰성을 높일 수 있다.
💡 코드 컨벤션에서 중요한 것은 일관성을 갖추는 것이다. 따라서, tab
들여쓰기를 선택하든, space
들여쓰기를 선택하든, 일관되게 이용해야 한다.
https://peps.python.org/pep-0008/
https://google.github.io/styleguide/javaguide.html
https://www.oracle.com/java/technologies/javase/codeconventions-contents.html
https://stackoverflow.com/questions/35649847/objective-reasons-for-using-spaces-instead-of-tabs-for-indentation
https://www.overops.com/blog/tabs-vs-spaces-how-they-write-java-in-google-twitter-mozilla-and-pied-piper/
https://kennethreilly.medium.com/tabs-vs-spaces-3c24defa7c9e
https://www.7pace.com/blog/programming-spaces-vs-tabs
tab 유저입니다. space가 tab 보다 사용하는 사람이 많다니... 충격이네요. 좋은 글 감사합니다!