본문 바로가기
백엔드/Java

Effective Java 맛보기 7탄

by david100gom 2019. 9. 20.

메서드

  1. 매개변수가 유효한지 검사하라

    • 메서드나 생성자를 작성할 때면 그 매개변수들에 어떤 제약이 있을지 생각해야 한다. 그 제약들을 문서화하고 메서드 코드 시작 부분에서 명시적으로 검사해야 한다. 이런 습관을 반드시 기르도록 하자. 그 노력은 유효성 검사가 실제 오류를 처음 걸러낼 때 충분히 보상받을 것이다.

  2. 적시에 방어적 복사본을 만들라

    • 클래스가 클라이언트로부터 받는 혹은 클라이언트로 반환하는 구성요소가 가변이라면 그 요소는 반드시 방어적으로 복사해야 한다. 복사 비용이 너무 크거나 클라이언트가 그 요소를 잘못 수정할 일이 없음을 신뢰한다면 방어적 복사를 수행하는 대신 해당 구성요소를 수정했을 때의 책임이 클라이언트에 있음을 문서에 명시하도록 하자0.

  3. 메서드 시그너처를 신중히 설계하라

  4. 다중정의는 신중히 사용하라

    • 프로그래밍 언어가 다중정의를 허용한다고 해서 다중정의를 꼭 활용하란 뜻은 아니다. 일반적으로 매개변수 수가 같을 때는 다중정의를 피하는 게 좋다. 상황에 따라, 특히 생성자라면 이 조언을 따르기가 불가능할 수 있다. 그럴 때는 헷갈릴 만한 매개변수는 형변환하여 정확한 다중정의 메서드가 선택되도록 해야 한다. 이것이 불가능하면, 예컨대 기존 클래스를 수정해 새로운 인터페이스를 구현해야 할 때는 같은 객체를 입력받는 다중 정의 메서드들이 모두 동일하게 동작하도록 만들어야 한다. 그렇지 못하면 프로그래머들은 다중정의된 메서드나 생성자를 효과적으로 사용하지 못할 것이고, 의도대로 동작 하지 않는 이유를 이해하지도 못할 것이다.

    • 재정의한 메서드는 동적으로 선택되고, 다중정의한 메서드는 정적으로 선택되기 때문이다.
  5. 가변인수는 신중히 사용하라

    • 인수 개수가 일정하지 않은 메서드를 정의해야 한다면 가변인수가 반드시 필요하다. 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는 성능 문제까지 고려하자.

  6. null이 아닌, 빈 컬렉션이나 배열을 반환하라

    • null이 아닌, 빈 배열이나 컬렉션을 반환하라. null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다.

  7. 옵셔널 반환은 신중히 하라

    • 값을 반환하지 못할 가능성이 있고, 호출할 때마다 반환값이 없을 가능성을 염두에 둬야 하는 메서드라면 옵셔널을 반환해야 할 상황일 수 있다. 하지만 옵셔널 반환에는 성은 저하가 뒤따르니, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 편이 나을 수 있다. 그리고 옵셔널을 반환값 이외의 용도로 쓴 경우는 매우 드물다.

  8. 공개된 API요소에는 항상 문서화 주석을 작성하라.

    • 문서화 주석은 여러분 API를 문서화하는 가장 훌륭하고 효과적인 방법이다. 공개 API라면 빠짐없이 설명을 달아야 한다. 표준 규약을 일관되게 지키자. 문서화 주석에 임의의 HTML 태그를 사용할 수 있음을 기억하라. 단, HTML 메타문자는 특별하게 취급해야 한다.

참조서적 및 페이지 : 

이펙티브 자바 Effective Java 3/E (http://www.yes24.com/Product/Goods/65551284)

'백엔드 > Java' 카테고리의 다른 글

Effective Java 맛보기 11탄  (0) 2019.09.21
Effective Java 맛보기 10탄  (0) 2019.09.21
Effective Java 맛보기 9탄  (0) 2019.09.21
Effective Java 맛보기 8탄  (0) 2019.09.21
Effective Java 맛보기 6탄  (0) 2019.09.20
Effective Java 맛보기 5탄  (0) 2019.09.17
Effective Java 맛보기 4탄  (0) 2019.09.16
Effective Java 맛보기 3탄  (0) 2019.09.15

댓글