1. 지역변수의 범위를 최소화하라.
1.1. 지역 변수의 값을 반복문이 종료된 뒤에 사용되지 않는 경우 while문 보다 for문을 이용하는게 났다.
1.2. 복사 붙여넣기시 while문 보다 오류가 날 확률이 적다.
1.3. while문 보다 가독성이 더 좋다
List<String> strList = List.of("11111","22222");
// for 문 안에서만 지역변수가 사용된다.
for (String text : strList) {
System.out.println(text);
}
// 반복문 밖에 지역변수가 사용된다.
Iterator<String> i = strList.iterator();
while (i.hasNext()){
System.out.println(i.next());
}
2. for 문보다는 for-each 문을 사용하라
2.1. for-each 문은 명료하고 유연하며 버그를 예방할 수 있다.
2.2. 특정 인덱스에 삭제, 변경이나 병렬 반복이 필요한 경우 for문을 사용해야 한다.
3. (표준)라이브러리를 익히고 사용하라
3.1. 전문가들의 검증이 이루어진 라이브러리이기 때문에 안정성이 높다.
3.2. 큰 시간을 낭비하지 않아도 된다.
3.3. 성능이 지속적으로 개선된다.
3.4. 다른 사람들과 코드경험을 공유할 수 있다.
4. 정확한 답이 필요하면 float나 double는 피하라.
4.1. 소수점 오차가 일어날 수 있다.
5. 박싱된 기본 타입보다는 기본 타입을 사용하라.
5.1. 기본 타입은 값만 갖고 있으나 박싱된 타입은 값과 식별성을 가져 값이 같아도 다르다고 판단할 수 있다.
5.2. 기본 타입은 언제나 유효한 값을 가지지만 박싱된 타입은 유효하지 않는 null을 가질 수 있다.
5.3. 기본타입과 박싱된 타입을 혼용한 연산에서는 기본타입보다 성능이 떨어진다.
5.4. 박싱된 기본 타입은 컬렉션이나 리플렉션을 사용할 때 쓰자
// 둘다 false를 반환한다. == 비교는 주소 비교이기 때문에 equals 비교를 해야한다.
Integer integer1 = new Integer(11);
Integer integer2 = new Integer(11);
String string1 = new String("11");
String string2 = new String("11");
System.out.println(integer1==integer2);
System.out.println(string1==string2);
6. 다른 타입이 적절하다면 문자열 사용을 피해라.
6.1. int, boolean 으로 표현할 수 있다면 문자열이 아닌 해당 타입을 사용하자.
6.2. String으로 키값을 갖기 보다는 전용 클래스를 만드는게 더 낫다.
7. 문자열 연결은 느리니 주의하라.
7.1. + 연산의 문자열 연결은 시간상 n^2에 메모리에도 계속 생성되니 StringBuilder나 StringBuffer를 사용하자.
'기타 > 이펙티브 자바' 카테고리의 다른 글
[이펙티브자바] 8.메서드 (0) | 2022.08.06 |
---|---|
[이펙티브자바] 7.람다와 스트림 (0) | 2022.07.25 |
[이펙티브자바] 5.제네릭 (0) | 2022.07.08 |
[이펙티브자바] 4. 클래스와 인터페이스 (0) | 2022.06.04 |
[이펙티브자바] 3. 모든 객체의 공통 메소드 (0) | 2022.05.16 |
댓글