일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정적중첩클래스
- 스프링컨테이너
- Spring
- 싱글톤패턴
- IoC
- 자바의정석
- java
- 비정적중첩클래스
- publicapi
- SOLID
- 더티채킹
- Velog
- 인프콘
- privateapi
- 애너테이션
- 인수테스트
- 항해99 9기
- DI
- 클라이언트사이드렌더링
- 일급컬렉션
- 항해99
- bean
- 서버사이드렌더링
- 변경감지
- 스파르타코딩클럽
- refreshtoken
- github actions
- 다형성
- 지네릭스
- 9기
- Today
- Total
멈재
[크라운드] #2, 파일 끝에 개행을 추가하세요 x 10 본문
크라운드 첫 번째 글에 이러한 내용을 작성했었다.
... 문제와 해결에 정보를 더한 양질의 내용으로 적어야 하지 않을까란 고민 때문에 포스팅까지 이어지는데 꺼려졌다.
지금은 그래도 일단 쓰자란 생각이 강하게 들어서 부족한 내용을 담더라도 쓰는 것을 중점으로 두려고 마음을 다잡았다.
그러나
너무 간단한 고민인 건 아닐까?
너무 당연한 내용은 아닐까?
내용이 너무 짧은 건 않을까?
라는 생각에 주저하게 되었고, 그렇게 대략 20개의 부채가 쌓여버렸다..
지금에서는 귀찮고 미뤄서 못쓴다기보다 시간적인 여유가 없어서 못쓰는게 크다.
그래도 차근히 지워나가려고 한다.
크라운드 1편에서 정적 도구로써 코드 리뷰 봇을 도입했다고 소개했는데, 요 녀석이 가끔 이러한 리뷰를 해주었다.
단순히 가독성을 위해 이러한 리뷰를 남겨주는건가 싶어 대수롭지 않게 넘겼지만 잊을만하면 파일 끝에 빈 줄을 추가해야 한다는 리뷰 내용이 있었다.
이전에 컨벤션과 관련된 포스팅으로 네이버 핵데이 Java 코딩 컨벤션을 본 기억이 있어서 찾아보게 되었는데 가장 서두 1. 파일 공통 요건에 '파일의 마지막에는 새 줄'이라는 내용이 존재했다.
다만 이 컨벤션 링크에는 저렇게만 나와있어서 다른 포스팅을 찾아보게 되었고, 개행을 해야 하는 이유를 알게 되었다.
이유는 다음과 같다.
참고로 다음에 설명할 <newline>은 개행 문자를 의미한다.
3.238 Newline Character (<newline>)
A character that in the output stream indicates that printing should start at the beginning of the next line. It is the character designated by '\n' in the C language. It is unspecified whether this character is the exact sequence transmitted to an output device by the system to accomplish the movement to the next line.
링크: https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_238
3.195 Incomplete Line
A sequence of one or more non- <newline> characters at the end of the file.
링크: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_195
번역하면 '파일 끝에 한 개 또는 한 개 이상의 non-<newline>인 경우 불완전한 라인으로 인식한다'는 것이다.
반면 행(라인)은 어떠한 기준을 가질까
3.205 Line
A sequence of zero or more non- <newline>s plus a terminating <newline>.
링크: https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_205
번역하면 '0개 이상의 non-<newline>에 <newline>이 추가되어 끝나면 라인으로 인식한다'는 것이다.
두 문단을 쉽게 말하면, 개행이 없다면 완벽한 행이 아니고, 행이라는 단위는 개행 문자를 기준으로 만들어진다고 할 수 있다.
행이라는 개념을 완전한 행과 불완전한 행으로 개념을 잡은 이유는 텍스트 파일은 하나 이상의 행으로 이루어진 파일이기 때문이다.
3.392 Text File
A file that contains characters organized into one or more lines. ...
왜 이러한 개행 문자가 추가돼야 할까?
운영체제 또는 도구에 따라 하나의 파일로 인식할 수 있기 때문이다.
즉, 잠재적인 문제를 방지하기 위함이라고 볼 수 있다.
한 가지 예시를 들어보겠다.
테스트 환경
운영체제: 윈도우 10
쉘: Git Bash, Power Shell
우선 UNIX 환경의 쉘인 Git Bash로 다음의 예시를 적용해봤다.
a.html과 b.html 파일 각각에 내용으로 h1 태그 안에 파일명을 넣어놓았다.
참고로 각 파일에는 개행이 존재하지 않는 한 줄로 구성되어 있다.
cat 명령에 파일 형식을 적어 두 개의 파일이 함께 출력되게 하면 다음과 같은 결과가 나오는 것을 알 수 있다.
파일 내에 개행이 존재하지 않아 파일 간의 차이를 알기 어렵다.
Power Shell에서는 어떤 결과가 나올까
이때에는 서로 개행되는 결과를 얻게 된다.
이처럼 환경에 따라 서로 다른 결과를 얻게 되는 문제가 발생할 수 있다.
따라서 잠재적인 문제가 발생하지 않으려면 파일 맨 마지막에 개행을 추가하는 습관을 들여야 하는 것을 알 수 있다.
참고
'크라운드' 카테고리의 다른 글
[크라운드] #3, 어리둥절 빙글빙글 삽질 일기 (1) (0) | 2023.06.05 |
---|---|
[크라운드] #1, 우리는 어떻게 이야기하고, 관리하고 있을까 (2) | 2023.05.08 |