일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 필드주입
- 자료구조
- 웹크롤링
- 알고리즘
- 캐치
- 프리온보딩 4월 백엔드 챌린지
- docker
- 도커
- Spring
- 수정자주입
- 벨로그
- 원티드프리온보딩백엔드챌린지
- 원티트 프리온보딩
- 개발자 커리어콘
- 인텔리제이
- 원티드 백엔드 챌린지
- 자바
- 의존성주입
- velog
- 의존성자동주입
- 스파프타 코딩클럽
- commit message
- springboot
- 스프링
- 파이썬
- 생성자주입
- 스파르타 코딩클럽
- Java
- 원티드 챌린지
- 커밋메세지
- Today
- Total
기록하는 블로그
[TIL] Final을 사용하자 본문
이 카테고리에는 짧게 배우거나 느낀 개발에 도움이 될만한 지식들을 기록하기로 했다. 약간 네이버 카페 같은 곳 보면 출석 체크 같이 짧은 글 올리는 그런 곳의 느낌을 담아서?
public class MemberDto {
private final String name;
private final int amount;
//......
}
자바에서 final 이란 키워드를 종종 본적이 있다. 당시 그 코드의 동작에는 큰 영향을 미치는 요소가 아니었기에 그냥 넘어갔는데 최근 개발 서적을 보면서 다시 찾아보게 되었다.
자바에서 final 을 사용하면 세 가지 효과를 얻을 수 있다.
1. Immutable 하게 함으로써 데이터의 값을 보호해준다.
2. final 을 인식하는 라이브러리를 사용할 수 있다.
3. 코드의 가독성을 높인다. (검증되지 않았음)
토이 프로젝트를 만들 때 흔히 DTO 클래스를 만들 때 전역 변수에 final로 선언해준 것을 종종 본적 있는데 1번의 이유 때문인 것 같다. 따라서, Override(재정의) 하거나 상속하면 절대 안되는 경우에만 사용해야한다
2번의 경우 Spring에서 제공하는 Lombok 라이브러리의 @RequiredArgsConstructor 어노테이션이 final로 선언된 필드에 한해서 생성자를 만들어주기 때문에 Lombok을 사용한다면 final은 같이 사용하는 게 좋겠다.
3번은 검증하거나 주위에서 들은 의견은 아니지만 기존의 개발방식에서 주로 그렇게 사용되어왔기 때문에 관습을 따르는 것 정도라고 생각하면 될 것 같다.
오늘 이후로는 되도록이면 DTO 클래스 같은곳에서 바뀌지 않는 상수에는 무조건 final 필드로 선언할 계획이다.
'TIL' 카테고리의 다른 글
[TIL] 좋은 Commit Message 작성하기 (0) | 2021.12.14 |
---|---|
[TIL] 알고리즘 - 깊이 우선탐색, 너비 우선 탐색 (0) | 2021.07.17 |
[TIL] 알고리즘 - 시간 복잡도 (0) | 2021.07.06 |
[IntelliJ] MacOS에서 IntelliJ 로 스프링 MVC 프로젝트 만들기 (0) | 2021.01.16 |