개발서적읽기
-
[이펙티브 자바] item 71 - 필요 없는 검사 예외 사용은 피하라개발서적읽기/Effective Java - temp 2020. 5. 21. 08:45
■검사 예외의 불편함 검사 예외를 싫어하는 개발자가 많지만 제대로 활용하면 API와 프로그램의 질을 높일 수 있다. 반면 사용이 과해지면 불편하기만 할 수도 있다. (검사 예외를 던지는 메서드는 스트림 안에서 직접 사용할 수 없기 때문에 (item45 ~ 48) 자바 8부터는 부담이 더욱 커졌다) 검사 예외가 프로그래머에게 지우는 부담은 메서드가 단 하나의 검사 예외만 던질 때가 특히 크다. API 안에 검사 예외가 여러개 있을 때나, 하나만 있을 때나 어차피 try catch로 묶거나 throws로 던져줘야 하는건 똑같다. 그리고 이처럼 검사 예외에 대한 책임을 지게 되면 해당 메서드를 스트림에서 직접 사용할 수 없다. 검사 예외가 0개에서 1개가 되는 것은 99개에서 100개가 되는것에 비해 훨씬 큰..
-
[이펙티브 자바] item 2 - 생성자에 매개변수가 많다면 빌더를 고려하라개발서적읽기/Effective Java 3E 2020. 5. 19. 21:23
■상황 어떤 클래스의 인스턴스를 반환해야 하는 상황이 생겼다. 생성자나 정적 팩토리 메서드를 만들면 될 것 같다. 그런데 생성자나 정적 팩터리 메서드에 필요한 선택적 매개변수가 많은 경우는 어떻게 할까? ■첫 번째 방법 : 점층적 생성자 패턴 가장 심플한 방법이다. 생성자나 팩터리 메서드를 오버로딩하면 된다. 하지만 이 방법은 코드가 더러워지는(?) 특징을 가지고 있다.public class NutritionFacts { private final int servingSize; // (mL, 1회 제공량) 필수 private final int servings; // (회, 총 n회 제공량) 필수 private final int calories; // (1회 제공량당) 선택 private final int ..
-
[이펙티브 자바] item 61 - 박싱된 기본 타입보다는 기본 타입을 사용하라개발서적읽기/Effective Java - temp 2020. 5. 15. 00:02
■자바의 데이터 타입 2가지기본 타입 : int, double, boolean 등참조 타입 : String, List 등 기본 타입은 1:1대응으로 '참조 타입'을 하나씩 가지고 있다. 이를 '박싱된 기본 타입' 이라고 부른다. (Integer,Double,Boolean 등) 오토 박싱과 오토 언박싱 덕분에 기본 타입과 박싱된 기본 타입을 편하게 구분 없이 사용할 수 있다. 그래도 분명한 차이는 있다. ■첫 번째 차이 기본 타입은 값만 가지고 있지만, 박싱된 기본 타입은 값에 더해 식별성 이라는 속성도 갖는다. (각 객체는 언제나 자신만의 주소값을 가진 고유의 존재) 두개의 박싱된 기본 타입은 값(value)이 같아도 결국 서로 다르다는 것을 의미한다. '첫 번째 차이'를 주의하지 않으면? 다음은 Int..
-
[이펙티브 자바] item 60 - 정확한 답이 필요하다면 float와 double은 피하라개발서적읽기/Effective Java - temp 2020. 5. 13. 23:00
■실수의 표현 방식컴퓨터에서 실수를 표현하는 방법은 정수에 비해 훨씬 복잡하다. 왜냐하면, 컴퓨터에서는 실수를 정수와 마찬가지로 2진수로만 표현해야 하기 때문. 아래의 2가지 실수 표현 방식이 있다.고정 소수점(fixed point) 방식 부동 소수점(floating point) 방식 고정 소수점 방식에 비해 부동 소수점 방식은 표현할 수 있는 범위가 훨씬 크다. 대부분의 시스템에서 부동 소수점 방식을 사용중이다. 그리고 현재 사용되고 있는 부동 소수점 방식은 대부분 IEEE 754 표준을 따르고 있다. float와 double 변수도 이 부동 소수점 방식을 사용중이다. ■부동 소수점 방식의 단점부정확하다! IEEE 754의 값을 계산하는 고유한 수식때문에 float(32 bit)는 소수 9번째 자리, ..
-
[이펙티브 자바] item 1 - 생성자 대신 정적 팩터리 메서드를 고려하라개발서적읽기/Effective Java 3E 2020. 5. 10. 00:21
■정적 팩터리 메서드란? 클래스의 인스턴스를 얻기 위해서 보통 생성자를 이용한다. 하지만 정적 팩터리 메서드라는 기법을 이용해 클래스의 인스턴스를 얻는 방법도 있다. 아래에는 TRUE, FALSE라는 Boolean 인스턴스를 반환하는 정적 팩터리 메서드의 예시이다.public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FLASE; } ■생성자와 비교한 정적 팩터리 메서드의 장점 장점 다섯가지를 알아보자. 이름을 가질 수 있다. 생성자의 매개변수만으로는 반환될 객체를 충분히 설명하지 못한다. 하지만 정적 팩터리 메서드는 가능하다 '값이 소수인 BigInteger를 반환한다' 라는 의미를 아래 생성자와 정적 팩터리 메서드 중 ..