본문 바로가기
[Effective Java] 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자. [Effective Java] 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자. - 사용 가능한 API 라면 반드시 문서화해야 한다. 만일 문서화 주석 규칙에 친숙하지 않다면 배워야 한다. - API 를 문서화하려면, 외부에 제공하는 모든 클래스, 인터페이스, 생성자, 메소드, 필드의 선언부 앞에 문서화 주석을 넣어야 한다. 만일 어떤 클래스가 직렬화될 수 있다면 직렬화 형태도 문서화해야 한다. - 문서화 주석이 빠진 API 를 사용하는 것은 실망스럽고 에러가 생길 가능성이 많다. 유지보수 하기 쉬운 코드를 작성하려면 외부에 공개되지 않는 대부분의 클래스, 인터페이스, 생성자, 메소드, 필드에 대해서도 문서화 주석을 작성해야 한다. - 메소드의 문서화 주석에서는 메소드와 클라이언트 사이의 계.. 2017. 1. 23.
[Effective Java] 제네릭 타입을 애용하자. [Effective Java] 제네릭 타입을 애용하자. - 클래스를 제네릭화 하는 방법. - 1. 클래스 선언부에 하나 이상의 타입 매개변수를 추가. - 2. 코드 안에 나오는 모든 Object 타입을 그것에 맞는 타입 매개변수로 변경한 후 컴파일. new E[ size ] 와 같은 부분에서 보통 에러가 난다. 이를 피해가는 방법 1. E[] elements = (E[]) new Object[ size ]; // 타입 안전하진 않다. 이를 피해가는 방법 2. Object[] elements = new Object[ size ]; // 사용하는 부분에서 casting 이 필요하다.. scalar 타입보다 배열 타입에 대한 unchecked 캐스트 경고를 억제하는 것이 더 위험하므로, 2번 방법이 더 적합해.. 2016. 11. 29.
[Effective Java] 배열보다는 List 를 사용하자. [Effective Java] 배열보다는 List 를 사용하자. - 배열은 두 가지 관점에서 제네릭 타입과 다르다. 1. array는 공변(covariant). Sub이 Super 의 서브 타입이라면, 배열 타입 Sub[] 은 Super[] 의 서브 타입이라는 의미. 제네릭은 불변(invariant). Type1 와 Type2 가 있을 때, 이들의 관계는 모두 무시하고, List 과 List 는 서로 슈퍼도 서브도 아니다. 이 차이를 기반으로 제네릭이 유연성을 떨어뜨린다고 볼 수 있지만, array는 안전성을 보장하지 못한다. 배열을 사용하면 런타임 에러를 발생시키기 쉽고, List 를 사용하면 컴파일 에러를 마딱뜨리기 쉽다. 당연히 컴파일 시 에러를 발견하는 것이 최고다. 2. array 는 구체적(r.. 2016. 11. 28.
[Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. [Effective Java] 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자. - 하나 이상의 타입 매개변수(type parameter)를 선언하고 있는 클래스나 인터페이스를 제네릭 클래스 또는 제네릭 인터페이스라고 한다. 제네릭 클래스와 인터페이스를 합해서 제네릭 타입이라고 부른다. 각 제네릭 타입에서는 매개변수화 타입(parameterized type)들을 정의한다. ( 이용 ) 실 타입 매개변수(actual type parameter)들은 제네릭 타입의 형식 타입 매개변수(formal type parameter)와 각각 대응된다. ( List 에서 String 이 실 타입 매개변수이고, 기존 T 혹은 E 가 타입 매개변수이다. ) - 각 제네릭 타입에서는 원천(raw)타입을 정의하는데.. 2016. 11. 21.
[Effective Java] Comparable 인터페이스의 구현을 고려하자. [Effective Java] Comparable 인터페이스의 구현을 고려하자. - compareTo 메소드는 Comparable 인터페이스에 존재하는 메소드이다. compareTo 메소드는 equals 메소드와 유사한 특성을 갖는다. 차이점은 두 객체가 동일한지 비교에 덧붙여 순서까지 비교할 수 있으며, 제네릭 타입을 지원한다. - Comparable interface 를 구현하면, Arrays.sort 와 같은 메소드를 손쉽게 쓸 수 있고, TreeSet 과 같은 크기 비교를 사용하는 Collection 들에서도 손쉽게 사용할 수 있다. - 자바 라이브러리의 모든 값 클래스들은 Comparable 인터페이스를 구현한다. - 알파벳 순, 숫자 순, 날짜 순과 같은 자연율을 갖는 값 클래스를 작성한다면 .. 2016. 10. 14.
반응형