개발 기록

[이펙티브자바] 아이템12 본문

JAVA

[이펙티브자바] 아이템12

수염차 2024. 10. 23. 09:15

(12) toString을 항상 재정의하라

 

[toString의 일반 규약]

- 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야한다

- 모든 하위 클래스에서 이 메서드를 재정의하라

 

[호출]

-println, printf, 문자열 연결 연산자+, assert 구문에 넘길 때, 혹은 디버거가 객체를 출력할 자동으로 사용됨

-> toString을 제대로 재정의하지 않으면 쓸모없는 메시지만 로그에 남을 것이다.

 

[메서드 구현시 고려사항]

1. 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다.

-- 그렇지 않았을 때의 문제점 : 왜 실패 했는지 알 수 없음

Assertion failure: expected {abc, 123}, but was {abc, 123}.
// 단언 실패: 예상값 {abc, 123}, 실젯값 {abc, 123}.

-- 객체가 거대하거나 문자열로 표현하기에 적합하지 않다면 요약 정보를 담아야한다.

전화번호부(총 1487536개)”나 “Thread[main,5,main]”

 

2. 반환값의 포캣을 문서화할지 정해야 한다.

3. 포맷을 명시하지 않아도 의도는 명확히 밝혀야 한다.

/**
* 이 약물에 관한 대략적인 설명을 반환한다.
* 다음은 이 설명의 일반적인 형태이나,
* 상세 형식은 정해지지 않았으며 향후 변경될 수 있다.
*
* "[약물 #9: 유형=사랑, 냄새=테레빈유, 겉모습=먹물]"
*/
@Override public String toString() { ... }

'JAVA' 카테고리의 다른 글

[이펙티브 자바] 아이템 18  (0) 2024.11.04
[이펙티브 자바] 아이템 15  (0) 2024.10.29
[이펙티브 자바] 아이템 11  (1) 2024.10.15
[이펙티브 자바] 아이템 7,8  (2) 2024.10.03
[이펙티브 자바] 아이템 6  (1) 2024.10.03
Comments