우테코 1주차 미션을 하다가 POSIX new line에 대한 피드백을 받았다.
해당 부분의 코드는 다음과 같다.
// then
assertEquals(new ArrayList<>(List.of("carB", "carC")), Service.getWinnerNames(cars));
}
}
처음에는 코드에 대한 피드백이 아니라 당황했고,
POSIX라는 처음보는 단어에 2차적으로 당황했다.
그럼 차례대로 알아보자
POSIX란?
- Portable Operating System Interface의 약자로 운영체제 사이의 호환성을 위해 IEEE에서 만든 표준
- 소스코드 호환을 위해 표준을 정한 것
// then
assertEquals(new ArrayList<>(List.of("carB", "carC")), Service.getWinnerNames(cars));
}
}
내가 작성한 코드에서 문제가 된 것은 파일 끝에 빈 줄(개행)이 되어 있지 않았기 때문이다.
즉, 개행(new line)하나가 뭐 문제가 있겠어? 라는 생각이 당연히 들기 마련이지만
그 개행 하나로 호환성에 큰 문제가 발생할 수 있게 된다.
- 파일 마지막 줄 바꿈은 유닉스에서 관용적으로 사용하던 것이다.
- 줄 바꿈이 없으면 파일을 올바르게 처리하지 못하는 프로그램들이 있다.
- POSIX에서 줄 바꿈이 하나의 행을 정의하는 표준으로 정하고 있다.
- 손상 된 파일을 쉽게 찾을 수 있다.
"파일 끝에 개행"은
실제로도 POSIX에 명확히 명세된 내용이다.
- Definitions - 3.392 Text File : A file that contains characters organized into one or more lines. The lines do not contain NUL characters and none can exceed {LINE_MAX} bytes in length, including the Although IEEE Std 1003.1-2001 does not distinguish between text files and binary files (See the ISO C Standard), many utilities only produce predictable or meaningful output when operating on text files. The standard utilities that have such restrictions always specify “text files”in their STDIN or INPUT FILES sections.
- Definitions - 3.205 Line : A sequence of zero or more non- s plus a terminating .
즉, 행의 끝은 개행이며, 텍스트 파일은 행의 집합이며 반드시 개행으로 끝나야 한다.
실제로, 이 컨벤션이 잘 준수되어 있지 않다면 컴파일러도 경고창을 띄운다
Intellij에서 개행을 자동으로 추가하는 방법
방법
step1 : File > Settings 들어가기
step2 : Ensure every saved file ends with a line break 검색
: 혹은 Editor > General 에서 찾아보아도 됨
이제 파일 끝에 자동으로 개행을 추가해준다.
'우테코 > Level1' 카테고리의 다른 글
List.of() vs Arrays.asList() 차이 / 갱신 가능 여부 (0) | 2024.02.22 |
---|---|
[우테코-Lv1] TDD- AssertJ 라이브러리 (0) | 2024.02.21 |
[Intellij IDEA] 페어 프로그래밍 공유 환경설정 / 같은 IDE 공유하기 (0) | 2024.02.19 |
[스크랩] git 커밋 메시지 타입 (0) | 2024.02.16 |
[우테코-Lv1] JUnit 단위 테스트 공부 (0) | 2024.02.15 |