| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- NAT gateway
- EC2
- 42서울
- 게임개발동아리
- openAI API
- 프로그래밍
- Spring boot
- UNICON
- Route53
- 개발공부
- 전국대학생게임개발동아리연합회
- 캡스톤디자인프로젝트
- 오블완
- AWS
- Redis
- CICD
- 생활코딩
- 프롬프트엔지니어링
- 체크인미팅
- 라피신
- 프리티어
- spring ai
- 백엔드개발자
- bastion host
- 도커
- UNICON2023
- 티스토리챌린지
- 인프라
- 스프링부트
- UNIDEV
- Today
- Total
Hyun's Wonderwall
[Java] 이펙티브 자바 - 8장(2/2), 9장(1/2) (아이템 55-63) 본문
8장 메서드
아이템 55. 옵셔널 반환은 신중히 하라
감나옵셔널은 예외 검사와 취지가 비슷. 결과가 없을 수 있으며, 클라이언트가 이 상황을 특별하게 처리해야 할 때 사용한다.
반환값 이외의 용도로 쓰는 경우는 드물다.
Stream<Optional<T>>. Optional의 stream().
컨테이너 타입은 옵셔널로 감싸면 안 된다. 빈 List<T>를 반환하는 게 좋다.
옵셔널 반환에는 성능 저하가 뒤따라, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 게 나을 수 있다.
아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라
API를 올바르게 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 ㅏㄷㄹ아야 한다.
메서드용 문서화 주석: 해당 메서드와 클라이언트 사이의 규약을 명료히 기술
요약 설명은 반드시 대상의 기능을 고유하게 기술해야 한다. *한 클래스/인터페이스 안에 요약 설명이 똑같은 멤버가 둘 이상이면 안 됨)
애너테이션 타입을 문서화할 때는 멤버들에도 모두 주석을 달아야 한다.
클래스 또는 정적 메서드의 스레드 안전 수준을 API 설명에 포함해야 한다. 직렬화할 수 있다면 직렬화 형태도.
9장: 일반적인 프로그래밍 원칙
아이템 57. 지역 변수의 범위를 최소화하라
가장 처음 쓰일 때 선언하라.
거의 모든 지역변수는 선언과 동시에 초기화해야 한다.
메서드를 작게 유지하고 한 가지 기능에 집중해라.
아이템 58. 전통적인 for문보다는 for-each 문을 사용하라
비교했으 코드 간결성 높임. 명료하고 버그를 예방해줌.
사용할 수 없는 상황: 파괴적인 필터링, 변형, 병렬 반복 -> 이때는 일반적인 for문 사용해야
아이템 59. 라이브러리를 익히고 사용하라.
표준 라이브러리를 사용하면 그 코드를 작성한 전문가의 지식과 여러분보다 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다.
Random말고 ThreadLocalRandom
java.lang, java.util, java.io와 그 하위 패키지 익숙해질 것.
아이템60. 정확한 답이 필요하다면 float와 double은 피하라
소수점 추적 때문. BigDecimal 사용하면 반올림 완벽히 제어 가능. 단점: 기본 타입보다 쓰기가 훨씬 불편하고 느림
성능이 중요하고 소수점을 직접 추적할 수 있고 숫자가 너무 크지 않다면 int나 long을 사용, 18자리를 넘어가면 BigDeicmal
아이템 61. 박싱된 기본 타입보다는 기본 타입을 사용하라
기본 타입: 간단하고 빠름.
오토박싱 사용 시 주의. 필요없는 객체 생성 부작용. 언박싱 과정에서 NPE 주의
아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라
문자열은 다른 값 타입을 대신하기에 적합하지 않다. (기본 타입)
열거 타입을 대신하기에 적합x.
혼합 타입도 대신하기 적합x
권한을 표현하기에 적합x.
아이템 63. 문자열 연결은 느리니 주의하라
문자열 연결 += 연산자로 n개를 잇는 시간은 n^2
문자열은 불변이라서, 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야 하기 때문에.
StringBuilder를 사용해서 append를 하라.
'Study > Java' 카테고리의 다른 글
| [Java] 이펙티브 자바 - 11장(2/2), 12장(1/2) (아이템 82-) (0) | 2025.09.20 |
|---|---|
| [Java] 이펙티브 자바 - 9장(2/2), 10장(1/2) (아이템 64-72) (0) | 2025.09.06 |
| [Java] 이펙티브 자바 - 7장(2/2), 8장(1/2) (아이템 46~54) (0) | 2025.08.23 |
| [Java] 이펙티브 자바 - 6장(2/2), 7장(1/2) (아이템 37~45) (2) | 2025.08.16 |
| [Java] 이펙티브 자바 - 5장(2/2), 6장(1/2) (아이템 28~36) (4) | 2025.08.16 |