9장 : 일반적인 프로그래밍 원칙

2023. 4. 15. 22:49스터디/이펙티브 자바 스터디

728x90

아이템 57. 지역변수의 범위를 최소화하라 

- 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 가장 처음 쓰일 떄 선언하기- 거의 모든 지역변수는 선언과 동시에 초기화해야(try-catch 제외)- 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while문보다 for 쓰기

 

아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라 

## for-each 못쓰는 상황

- 파괴적인 필터링 : 선택된 원소를 제거해야 한다면 사용 불가

- 변형 : 원소의 값 일부 혹은 전체 교체시 사용 불가

- 병렬 반복 : 병렬 순회시 사용 불가

아이템 59. 라이브러리를 익히고 사용하라 

# Random 사용 시 문제점

- 나머지 연산값이 2의 제곱수라면 같은 수열이 반복

- 나머지 연산값이 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 자주 반환 

- 지정한 범위 바깥 수가 종종 튀어나옴

 

- ThreadLocalRandom으로 대체하자

 

# 표준 라이브러리 장점

- 핵심적인 일과 크게 관련 없는 문제를 해결하느라 시간투자 안해도 됨

- 노력을 따로 하지 않아도 성능이 지속적으로 개선

- 기능이 점점 많아짐

- 가독성 

아이템 60. 정확한 답이 필요하다면 float와 double은 피하라 

- float와 double은 근사치로 계산

- 정확한 계산에는 BigDecimal, int, long 쓰자


아이템 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 

- 기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 더해 식별성이란 속성을 가짐- 박싱된 기본 타입의 두 인스턴스는 값이 같아도 서로 다르다고 식별- 박싱된 기본 타입은 null을 가질 수 있음.- 기본 타입이 박싱된 기본 타입보다 시간과 메모리 사용면에서 더 효율적- 박싱된 기본 타입에 == 연산자를 사용하면 오류가 남- 기본 타입과 박싱된 기본 타입을 혼용한 연산에서는 박싱된 기본 타입의 박싱이 자동으로 풀림- 컬렉션의 원소, 키, 값으로 쓸 때는 박싱 타입이 적합


아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라 

- 문자열은 다른 값 타입을 대신하기에 적합하지 않음

- 문자열은 열거 타입을 대신하기에 적합하지 않음

- 문자열은 혼합 타입을 대신하기에 적합하지 않음

- 문자열은 권한을 표현하기에 적합하지 않음


아이템 63. 문자열 연결은 느리니 주의하라 

- 응 9버전 부터 업뎃 됐어~


아이템 64. 객체는 인터페이스를 사용해 참조하라 

# 적합한 인터페이스가 없는 케이스

- 클래스 기반으로 작성된 프레임워크가 제공하는 객체

- 인터페이스에는 없는 특별한 메서드 제공하는 클래스

 

- 적합한 인터페이스가 없다면 클래스의 계층구조 중 필요한 기능을 만족하는 가장 덜 구체적인 클래스를 타입으로 사용

아이템 65. 리플렉션보다는 인터페이스를 사용하라 

- 리플렉션은 아주 제한된 형태로만 사용해야

- 리플렉션은 인스턴스 생성에만 쓰고, 이렇게 만든 인스턴스는 인터페이스나 상위 클래스로 참조해 사용 

- 리플렉션은 런타임에 존재하지 않을 수도 있는 다른 클래스, 메서드, 필드와의 의존성 관리시 적합

- 또한, 버전이 여러 개 존재하는 외부 패키지를 다룰 때 유용

- 접근하려는 새로운 클래스나 메서드가 런타임에 존재하지 않을 수 있다는 사실을 반드시 감안해야

아이템 66. 네이티브 메서드는 신중히 사용하라 

# 전통적인 네이티브 메서드 주요 쓰임새

- 레지스트리 같은 플렛폼 특화 기능

- 네이티브 코드로 작성된 기존 라이브러리를 사용

- 성능 개선 목적

 

- 쓰지마 제발 하지 말라면 하지마 


아이템 67. 최적화는 신중히 하라 

- 빠른 프로그램 보다는 좋은 프로그램을 작성

- 성능을 제한하는 설계를 피하라

- API를 설계시 성능에 주는 영향을 고려

- 성능을 위해 API를 왜곡하는 건 매우 안좋은 생각

- 각각의 최적화 시도 전후로 성능을 측정해야


아이템 68. 일반적으로 통용되는 명명 규칙을 따르라 

- 각 요소는 일반적으로 8자 이하 짧은 단어로

- 널리 통용되는 줄임말을 제외하고는 줄이지 마세용

- 약자 경우 첫 글자만 대문자로

- 상수 필드(static final) 는 모두 대문자, 및 스네이크 케이스

- 인터페이스 이름은 able, ible 로 끝나는 형용사

- 애너테이션은 규칙 없음

- 아 구글 컨벤션 참고해 그냥

728x90

'스터디 > 이펙티브 자바 스터디' 카테고리의 다른 글

11장 : 동시성  (0) 2023.04.22
10장 : 예외  (0) 2023.04.21
8장 : 메서드  (0) 2023.04.06
7장 : 람다와 스트림  (0) 2023.04.06
6장 : 열거 타입과 애너테이션  (0) 2023.04.06