서론메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다.따라서 각 메서드가 던지는 예외 하나하나를 문서화하는 데 충분한 시간을 쏟아야 한다.
검사 예외는 @throws 태그로 문서화하라검사 예외(Checked Exception)는 항상 따로따 ...
서론수행하려는 일과 관련 없어 보이는 예외가 튀어나오면 당황스럽다.메서드가 저수준 예외를 처리하지 않고 바깥으로 throw 해버릴 때 상위 메서드에서 종종 발생하는 일이다.내부 구현방식을 상위에 드러내어 윗 레벨 API를 오염 시킬 수 있고, 다음 릴리스에서 구현방식이 ...
서론숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다.예외도 마찬가지로 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다.
표준 예외를 재사용하라
표준 예외를 사용하면 다른사람이 API를 익히고 사용 ...
서론자바 플랫폼은 명명 규칙이 잘 정립되어 있으며, 그중 많은 것이 자바 언어 명세에 기술되어 있다.자바의 명명 규칙은 철자와 문법 두 범주로 나뉜다.철자 규칙은 패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다.이 규칙들은 특별한 이유가 없는 ...
최적화에 대한 명언
맹목적인 어리석음을 포함해 그 어떤 핑계보다 효율성이라는 이름 아래 행해진 컴퓨팅 죄악이 더 많다 (심지어 효율을 높이지도 못하면서)
- 윌리엄 울프(Wulf72)
(전체의 97% 정도인) 자그마한 효율성은 모두 잊자. 섣부른 최적화가 만약의 근 ...
서론리플렉션 기능(java.lang.reflect)을 이용하면 프로그램에서 임의의 클래스에 접근할 수 있다.Class 객체가 주어지면 클래스 정보를 통해 아래와 같은 인스턴스를 가져올 수 있다.
Constructor
생성자 시그니처를 가져올 수 있다.
생성자 인스턴스 ...
서론Item 51에 제네릭 타입으로 클래스가 아니라 인터페이스를 사용하라고 설명 되어있다.이 말의 의미는 객체는 클래스가 아닌 인터페이스로 참조하라 라는 의미로 확장할 수 있다.적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 ...
서론문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다.그런데 한 줄짜리 출력값(return prefix + str + suffix; 정도?) 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때라면 괜찮다.하지만 문자열 여러개를 사용하기 시작 ...
서론문자열(String)은 텍스트를 표현하도록 설계되었고, 그 일을 아주 멋지게 해낸다.그런데 문자열은 워낙 흔하고 자바가 또 잘 지원해주어 원래 의도하지 않는 용도로도 쓰이는 경향이 있다.
문자열의 안티패턴문자열은 다른 값 타입을 대신하기에 적합하지 않다.많은 사람들 ...