이펙티브자바 Effective Java - 모든 객체의 공통 메서드(3) : toString을 항상 재정의히라 Object의 기본 toString 메서드는 잘 알다시피 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 클래스_이름@16진수로_표시한_해시코드로나 반환될 것이다. toString 일반 규약에 따르면 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야 한다. toString() 메서드는 보통 println, printf, 문자열 연결 연산자(+), assert 구문... 이펙티브자바이펙티브자바 아이템72. 표준 예외를 사용하라 상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 IllegalArgumentException을 던졌었는데, 이번 기회에 공부를 해봤다. 숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋다. 대표적으로 재사용되는 예외는 아래와 같다. 예외 주요쓰임 IllegalArgumentExc... 체스우테코이펙티브자바우테코 86. Serializable을 구현할지는 신중히 결정하라 자바가 객체를 바이트 스트림으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는(역직렬화) 메커니즘이다. 직렬화된 객체는 다른 VM에 전송하거나 디스크에 저장한 후 나중에 역직렬화할 수 있다. 따라서 객체를 저장한다는 것은 객체의 모든 인스턴스 변수의 값을 저장한다는 의미이다. 객체를 저장, 전송하기 위한 방법으로 직렬화가 등장한다. 프로그래머가 어렵지 않게 분산 객체를 ... 자바이펙티브자바이펙티브자바 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 1. 이름을 가질 수 있다. 한 클래스에 시그니처가 같은 생성자가 여러 개 필요할 것 같으면, 생성자를 정적 팩터리 메서드로 바꾸고 각각의 차이를 잘 드러내는 이름을 지어주자. 2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 불변 클래스는 인스턴스를 미리 만들어 놓거나 새로 생성한 인... 이펙티브자바이펙티브자바 [item 11]equals를 재정의하려거든 hashCode도 재정의하라 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 컬렉션의 원소로 사용할 때 문제를 일으킨다. equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드의 반환값은 멱등성을 보장해야한다. equals(Object)가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 똑같은 값을 반환해야한다. (... 이펙티브자바이펙티브자바 아이템1 생성자 대신 정적 팩터리 메서드를 고려하라 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 이름을 가질 수 있다. 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 인스턴스를 통제하면 클래스를 싱글턴으로 만들 수도, 인스턴스화 불가로 만들수도 있다. 불변 값 클래스에서 동치인 인스턴스가 단 하나뿐임을 보장할 수 있다. 반환 타입의 하위 타입 객체를 반... 자바이펙티브자바이펙티브자바
Effective Java - 모든 객체의 공통 메서드(3) : toString을 항상 재정의히라 Object의 기본 toString 메서드는 잘 알다시피 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 클래스_이름@16진수로_표시한_해시코드로나 반환될 것이다. toString 일반 규약에 따르면 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야 한다. toString() 메서드는 보통 println, printf, 문자열 연결 연산자(+), assert 구문... 이펙티브자바이펙티브자바 아이템72. 표준 예외를 사용하라 상태패턴을 이용해서 체스게임을 구현했는데, 해당 피드백을 받았다. 지금까지 미션을 하면서 무지성으로 IllegalArgumentException을 던졌었는데, 이번 기회에 공부를 해봤다. 숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋다. 대표적으로 재사용되는 예외는 아래와 같다. 예외 주요쓰임 IllegalArgumentExc... 체스우테코이펙티브자바우테코 86. Serializable을 구현할지는 신중히 결정하라 자바가 객체를 바이트 스트림으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는(역직렬화) 메커니즘이다. 직렬화된 객체는 다른 VM에 전송하거나 디스크에 저장한 후 나중에 역직렬화할 수 있다. 따라서 객체를 저장한다는 것은 객체의 모든 인스턴스 변수의 값을 저장한다는 의미이다. 객체를 저장, 전송하기 위한 방법으로 직렬화가 등장한다. 프로그래머가 어렵지 않게 분산 객체를 ... 자바이펙티브자바이펙티브자바 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 1. 이름을 가질 수 있다. 한 클래스에 시그니처가 같은 생성자가 여러 개 필요할 것 같으면, 생성자를 정적 팩터리 메서드로 바꾸고 각각의 차이를 잘 드러내는 이름을 지어주자. 2. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 불변 클래스는 인스턴스를 미리 만들어 놓거나 새로 생성한 인... 이펙티브자바이펙티브자바 [item 11]equals를 재정의하려거든 hashCode도 재정의하라 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 컬렉션의 원소로 사용할 때 문제를 일으킨다. equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드의 반환값은 멱등성을 보장해야한다. equals(Object)가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 똑같은 값을 반환해야한다. (... 이펙티브자바이펙티브자바 아이템1 생성자 대신 정적 팩터리 메서드를 고려하라 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 이름을 가질 수 있다. 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 인스턴스를 통제하면 클래스를 싱글턴으로 만들 수도, 인스턴스화 불가로 만들수도 있다. 불변 값 클래스에서 동치인 인스턴스가 단 하나뿐임을 보장할 수 있다. 반환 타입의 하위 타입 객체를 반... 자바이펙티브자바이펙티브자바