티스토리 뷰
Null 이란?
- null means that the variable hasn’t been set a value = null은 값이 할당되지 않은 변수
- merely a special literal that can be of any reference type = 모든 참조 유형이 될 수있는 특수 리터럴이다. = 모든 참조는 null 가능
- null is used to denote “no object” or “unknown” or “unavailable”, but these meanings are application specific = null은 “객체 없음”또는 “알 수 없음” 또는 “사용할 수 없음”을 나타내는 데 사용되지만 이러한 의미는 응용 프로그램에 따라 다르다.
- “빈” 상태는 String str = "";와 같이 “빈 값”이 객체에 할당되어 있기 때문에 null과는 다르며, 0도 0이라는 값이 할당된 상태이기 때문에 null과는 전혀 다르다.
- null은 존재하지 않는 상태를 나타내기 위한 것이다.
Null 을 안전하게 다루는 방법
1. assert
assert 부울식; 혹은 assert 부울식 : 수식;
예1) assert age > 0 : “나이는 음수가 될 수 없습니다:”+age;
예2) aasert val < 10 ; “10보다 작은 값만 쓸 수 있습니다.”;
부울식이 거짓이면 AssertionError 발생
수식은 AssertionError에 포함될 상세 정보를 만드는 생성식
2. optional
Java8에서 Optional<T> 클래스를 사용해서 npe(null point exception)을 방지할 수 있도록 해준다. option<T>는 null이 올 수 있는 값을 감싸는 wrapper 클래스로, 참조하더라도 npe가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같이 value에 값을 저장해서 null이 오더라도 바로 npe를 발생하지 않게하며 클래스이기 때문에 각종 메소드를 제공한다.
- NPE를 발생할 수 있는 null을 직접 다루지 않아도 된다.
- 번거롭게 null을 직접 체크하지 않아도 된다.
- 명시적으로 해당 변수가 null값이 올 수도 있다는 가능성을 표현할 수 있다.
Null 사용시 주의 할 점
1. API에 null을 최대한 쓰지 말아라
- null로 지나치게 유연한 메서드를 만들지 말고 명시적인 메서드를 만들어라
- API에 null을 받아서 분기처리 하지말고 애초에 null이 있을 때 메서드와 없을 때 메서드를 나눠서 만들어라
- null을 반환하지 말라
- null을 반환하지 말고 예외를 던져라
- 빈 반환 값은 빈 컬렉션이나 Null 객체를 활용하라
2. 사전 조건과 사후 조건을 확인하라: “계약에 의한 설계”
- Spring의 Assert 클래스
3. (상태와 같이) null의 범위를 지역(클랫, 메서드)에 제한하라
- 상태와 비슷하게 null도 지역적으로 제한하면 큰 문제가 안된다
- 클래스와 메서드를 작게 만들어라
- 설게가 잘 된 코드에선 null의 위험도 줄어든다
4. 초기화를 명확히 하라
Reference Link
'Tech Interview > 기술 면접 준비' 카테고리의 다른 글
[Backend 개발자 면접 준비] HTTP 메서드 (0) | 2023.08.17 |
---|---|
[Backend 개발자 면접 준비] 동일성(Identity)과 동등성(Equality) (0) | 2023.08.16 |
[Backend 개발자 면접 준비] List 와 Set 차이 (0) | 2023.08.14 |
[Backend 개발자 면접 준비] Redis 란? (0) | 2023.08.11 |
[Backend 개발자 면접 준비] 자료구조 - 스택(Stack) 과 큐(Queue) (0) | 2023.08.10 |
- Total
- Today
- Yesterday
- 제로베이스 백엔드 스쿨
- 자바
- 코딩테스트 준비
- 코딩테스트 공부
- 코딩테스트
- 취준
- 개발자 면접 준비
- 코테준비
- 프로그래머스
- 주니어 개발자 취업 준비
- 개발자 취준
- 제로베이스 백준 장학금
- 취업 준비
- 코딩테스트공부
- java
- 알고리즘 공부
- 개발자 취업 준비
- 백엔드 개발자 취업 준비
- 취업준비
- 백엔드 개발자
- 프로그래머스 카카오
- 백엔드 개발자 기술 면접 준비
- 알고리즘공부
- 기술 면접 준비
- 알고리즘
- 백준
- 코테공부
- 자바공부
- 프로그래머스 자바
- 코테 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |