본문 바로가기

기타/이펙티브 자바7

[이펙티브자바] 9.일반적인 프로그래밍 1. 지역변수의 범위를 최소화하라. 1.1. 지역 변수의 값을 반복문이 종료된 뒤에 사용되지 않는 경우 while문 보다 for문을 이용하는게 났다. 1.2. 복사 붙여넣기시 while문 보다 오류가 날 확률이 적다. 1.3. while문 보다 가독성이 더 좋다 더보기 List strList = List.of("11111","22222"); // for 문 안에서만 지역변수가 사용된다. for (String text : strList) { System.out.println(text); } // 반복문 밖에 지역변수가 사용된다. Iterator i = strList.iterator(); while (i.hasNext()){ System.out.println(i.next()); } 2. for 문보다는 fo.. 2022. 10. 15.
[이펙티브자바] 8.메서드 1. 매개변수가 유요한지 검사하라. 1.1. 메서드 몸체가 수행되기 전에 매개변수를 검사하라.(assert, requireNonNull 등 사용) 2. 적시에 방어적 복사본을 만들어라. 2.1. 외부에서 수정가능하지 못하게 방어적 코드를 작성하라. 더보기 import java.io.IOException; import java.util.Date; class Main { public static void main(String[] args) throws IOException { Date start = new Date(); Date end = new Date(); Period period = new Period(start, end); end.setYear(78); // period의 내부를 수정 System.o.. 2022. 8. 6.
[이펙티브자바] 7.람다와 스트림 1. 2. 람다보다는 메서드 참조를 사용하라. 2.1. 메서드 참조가 람다보다 더 간결한 경우 메서드 참조를 이용해라. 2.2. 메서드 참조는 5가지의 유형이 있다. 더보기 유형 메서드 참조 람다 Static Integer::parseInt str -> Integer.parseInt(str) Bounded Instant.not()::isAfter Instant instant = new Instant.now() t -> instant .isAfter(t) UnBounded String::toLowerCase str -> str.toLowerCase() Class Constructor TreeMap::new () -> new TreeMap() Array Constructor int[]::new len -> .. 2022. 7. 25.
[이펙티브자바] 5.제네릭 1. Raw타입은 사용하지 말아라 1.1. Raw 타입(타입 매개변수가 없는 제네릭 타입)을 사용하면 제너릭의 안정성과 표현력을 잃게 된다. 더보기 public class EffectiveJava { private final Collection stamps = new ArrayList(); // 타입을 명시해서 작성 //private final Collection stamps = new ArrayList(); //Compile에는 문제 없으나 Runtime시 ClassCastException 에러 발생 public void main(){ stamps.add(new Coin()); stamps.add(new Stamp()); Iterator iterator = stamps.iterator(); while(.. 2022. 7. 8.
[이펙티브자바] 4. 클래스와 인터페이스 1. 클래스와 멤버의 접근 권한을 최소화하라. 1.1. public클래스의 가변필드는 public이 아니어야 한다. 1.2. static final Array 같은 경우 값의 변경이 가능하기 때문에 private으로 만들어라. 더보기 public static final Integer[] VALUES = {1, 2, 3}; //수정 가능 EffectiveJava.VALUES[0] = 1; private static final Integer[] VALUES = {1, 2, 3}; //해결방법 1.불변 리스트로 만들기 public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)); //해결방법 2.복사본을.. 2022. 6. 4.
[이펙티브자바] 3. 모든 객체의 공통 메소드 1. equals는 일반 규약을 지켜 재정의하라. 1. 모든 클래스는 Object를 상속받는데 equals, hashCode, toString, clone, finalize 를 재정의 할 수 있다. 2. equals는 물리적 동치성(메모리 주소가 같은지)이 아니라 논리적 동치성(갖고 있는 값이 같은지 등)을 비교할 때 이다. 3. equals 메소드의 규약을 따라야 한다. 3.1. 반사성 : x.euqals(x) 는 항상 true - 자기자신은 항상 같다라는 뜻 3.2. 대칭성 : x.euqals(y) 가 true이면 y.euqals(x) 도 true이다. 3.3. 추이성 : x.euqals(y) 가 true이고 y.euqals(z) 도 true이면 x.euqals(z)도 true이다. 3.4. 일관성 .. 2022. 5. 16.