왜 파일 마지막에 개행이 필요할까?


미션을 진행하다보면 파일 마지막 줄을 비우라는 리뷰를 많이 받아볼 수 있다.

처음엔 그저 가독성을 위해 관례적으로 마지막 줄을 비워줘야 하는 줄 알았는데 다 이유가 있었다.

그 이유는 바로 POSIX 명세가 그렇기 때문이다.

POSIX 명세가 뭐지?

POSIX 는 **이식 가능 운영 체제 인터페이스(Portable Operating System Interface)**의 약자로, 서로 다른 UNIX OS 의 공통 API 를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE 가 책정한 애플리케이션 인터페이스 규격이다.

POSIX 명세에는 프로세스 환경, 파일과 디렉터리 등 다양한 개념을 규격화하고 있다.

이 중에 텍스트 파일과 라인에 대한 규격 역시 정의되어 있는데, 이를 정리하면 아래와 같다.

  • 행의 끝(terminating)은 개행(EOL, end-of-line)
  • 텍스트 파일은 행의 집합이며 행은 반드시 개행으로 끝난다.

따라서 많은 시스템과 도구들이 이 표준을 따라 구현되어 있다.

이를 지키지 않을 경우 예기치 않은 동작을 일으킬 수 있는 것이다.

또한, 협업 시 비표준과 표준이 섞여서 일을 하게 된다면 표준을 지키는 누군가의 커밋에 자동개행이 추가되기 떄문에 모두가 표준을 지키는 것이 이상적이다.

IntelliJ 설정은 없을까?


맥 기준으로 Preferences → Editor → General 맨 마지막에 Ensure every saved file ends with a line break 체크박스를 클릭해주면 된다.