자바스크립트 코드 마지막에 빈 줄을 삽입하는 이유
Table of contents
호기심에 찾아보기 시작했는데 토끼굴에 들어갔다 나왔다..😅
⚠️ 정확하지 않은 정보가 있을 수 있습니다. 잘못된 내용이 있다면 꼭 알려주세요!
줄 바꿈을 하는 이유
파일 마지막 줄 바꿈은 유닉스에서 관용적으로 사용하던 것이다
ESLint 문서에선 이렇게 설명하고 있다.
Trailing newlines in non-empty files are a common UNIX idiom. Benefits of trailing newlines include the ability to concatenate or append to files as well as output files to the terminal without interfering with shell prompts. [1]
(영어 실력이 부족하여 올바르게 해석한지 모르겠습니다만) 줄여서 써보면,
UNIX에서 파일 마지막에 새로운 줄을 삽입하면, 쉘 프롬프트에서 파일을 연결하거나 추가할때 편리하기 때문에 관용적으로 사용했다.
위의 내용을 바탕으로 stack overflow에서 찾아본 봐로는 cat
과 같은 명령어로 파일을 합칠때 개행이 안 되어 있으면 고통스럽고 비효율적이라 한다!
줄 바꿈이 없으면 파일을 올바르게 처리하지 못하는 프로그램들이 있다
여러 텍스트 편집기(Vim 같은)와 컴파일러(C++, 파이썬)들은 파일 끝에 줄 바꿈이 있는 것을 가정하기 때문에 경고를 발생 시킨다고 한다.
POSIX에서 줄 바꿈이 하나의 행을 정의하는 표준으로 정하고 있다
IEEE 라는 단체에서 UNIX의 표준을 정하는 명세 POSIX에선 줄 바꿈이 하나의 행을 정의하는 표준으로 정하고 있어
파일 끝에 newline 문자가 없으면 끝나지 않은 행으로 간주한다고 한다. [2]
운영체제 마다 줄바꿈 정의가 다르고 이로 인해 파일이 깨지는 경우가 있다고 한다. [3]
- Window/DOS : CRLF 조합으로 줄바꿈을 정의
- Unix/Linux/C : LF 만으로 줄바꿈을 정의
손상 된 파일을 쉽게 찾을 수 있다
줄 꿈이 없는 파일을 손상 된 파일로 인식하면 아주 작은 byte를 사용함으로써 CPU 사용률을 최소한으로 줄이면서 정확하게 감지 할 수 있다고도 한다. (이건 정확한 정보인지 모르겠다)
꼭 필요한가?
사실 JavaScript, HTML, CSS 텍스트 파일이나 최신 브라우저, IDE 등에서는 줄 바꿈을 안 하여도 문제가 안 생긴다고 한다.
여러 이유 때문에 파일 마지막에 줄 바꿈의 대해서 개발자들 사이에서 의견이 분분한 것 같다.
대표적인 주장들을 간단히 요약하면 이러했다.
👍 요즘 텍스트 파일에서 EOF 줄 바꿈이 필수는 아니지만 대부분의 유닉스 도구가 일관된 결과와 함께 작동하도록 하는 유용한 규칙이다.
👎 지금은 필요 없는 표준인데 아직도 관용적으로 적용되는 규칙이다.
TL ; DR
- 줄 바꿈은 유닉스에서 관용적으로 사용하던 것이다.
- 파일 마지막에 줄 바꿈이 없으면 파일을 올바르게 처리하지 못하는 프로그램들이 있다.
- JavaScript, HTML, CSS 등의 파일에서는 줄 바꿈이 없어도 큰 문제가 발생하지 않는다.
- 사실은 빈 줄이 아니라 개행 문자를 추가하는 것이다!
- 그리고 개행문자는 운영체제 마다 정의가 다르다.
reference
Why is it recommended to have empty line in the end of a source file?