오늘은 PR을 날린 바우처 프로젝트를 훑어보며 리팩토링을 진행하였다.
나름 내 기준에서 열심히 짰다고 생각했지만, 코드를 작은 단위로 계속 보다보니 또 고치면 좋을 것 같은 부분이 생겼다
특히 구현하며 힘들었거나 많은 고민을 들였던 부분은 관련된 레퍼런스나 구글링을 통해 더 나은 방향성을 찾아 리팩토링 하였다.
오늘의 학습 Keyword
🔥 새롭게 배운 것 / 리마인드
- properties/yml 파일에서 경로등을 주입 받기 (
@Value
어노테이션)
- File 클래스와 , Path 클래스 차이
File
클래스
- java.io.File 패키지에 속하는 클래스
- JDK 1부터 존재하던 클래스이며, 기본적인 파일 및 디렉터리 작업을 수행하는 데 사용된다.
- 파일 경로를 문자열로 나타내며, 플랫폼별로 파일 경로를 처리한다. 즉, 경로 구분자로 '/' 또는 ''를 사용하며, 특정 플랫폼에 종속적일 수 있다.
- 파일 시스템 외에도 클래스패스를 포함한 다양한 리소스를 나타낼 수 있다
- 몇 가지 파일 및 디렉터리 작업을 수행할 수 있지만, 좀 더 강력하고 유연한 기능은 제공하지 않는다.
Path
클래스
- java.nio.file.Path 패키지에 속하는 인터페이스 및 관련 클래스이다.
- JDK 7부터 도입된 NIO.2(New I/O) API의 일부이다.
- 파일 경로를 나타내는 데 사용되며, 파일 시스템에 특화된 기능을 제공한다.
- 파일 시스템의 경로를 추상화하고, 플랫폼에 독립적인 방식으로 경로를 다룰 수 있다.
- 파일 경로 조작, 파일 및 디렉터리 생성, 파일 속성 읽기/쓰기 등 다양한 작업을 지원한다.
- Path 인터페이스는 파일 경로를 나타내며, Paths 유틸리티 클래스를 통해 Path 객체를 생성할 수 있다.
따라서, Path 클래스는 파일 시스템에 특화된 경로 조작 기능을 제공하고, File 클래스는 더 단순한 파일 및 디렉터리 작업에 사용된다. Path 클래스는 더 최신이며, Java NIO의 기능과 장점을 활용할 수 있는 클래스이다.
- Collections.singleTonList / Collections.emptyList 사용법
Collections.singleTonList
: 단일 요소 처리, 성능 개선, 가독성
- singletonList 메서드는 지정된 요소를 포함하는 불변의 단일 요소 리스트를 생성한다.
- 생성된 리스트는 수정할 수 없으며, 크기가 1인 리스트이다.
- 단일 요소에 접근할 필요가 있을 때 유용하며, 일반적으로 배열이나 컬렉션을 단일 요소를 포함하는 리스트로 감싸는 데 사용된다.
- 예를 들어, List<스트링> list = Collections.singletonList("Hello");와 같이 사용할 수 있다.
Collections.emptyList
: 코드 안정성,
- emptyList 메서드는 비어있는 불변의 리스트를 생성한다.
- 생성된 리스트는 수정할 수 없으며, 크기가 0인 리스트이다.
- 비어있는 리스트가 필요한 경우 유용하게 사용된다.
- 예를 들어 List<인티저> emptyList = Collections.emptyList();와 같이 사용할 수 있다.
- Collections.emptyList를 반환한다면 null을 반환하는 것보다 코드 안정성을 높일 수 있다. 호출자가 null 체크를 하지 않아도 되므로 NPE등의 예외가 발생할 가능성을 줄일 수 있다.
이러한 메서드들은 불변성을 보장하므로, 생성된 리스트는 요소를 추가, 제거 또는 수정할 수 없다. 따라서, 단순히 읽기 전용 리스트로 사용하기에 적합하다. 또한, 메모리 효율성과 성능 향상을 위해 사용되는 경우가 많다.
🤟🏽 잘한 점
- 바우처 과제 리팩토링! 배운게 많다!
- 운동도 성공!
🧶 아쉬웠던 점
🌱 내일의 간략한 목표