You will be fine

<이펙티브 자바> 8. 메서드

by BFine
반응형

www.yes24.com/Product/Goods/65551284

 

이펙티브 자바 Effective Java 3/E

자바 플랫폼 모범 사례 완벽 가이드 - Java 7, 8, 9 대응자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브

www.yes24.com

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

  • 오류는 가능한 빨리 발생한 곳에서 잡아야한다

  • 문서화할때 예외도 함께 기술

  • 자바 7에 추가된 Objects 메소드를 활용하자

  • assert를 통해 매개변수 유효성을 검증할 수 있다.

    • 실패하면 AssertionError를 발생

    • 성능 저하없음

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

  • 다른 객체의 허락없는 수정을 방어해라

  • Date는 낡은 API이므로 새로운 코드 작성할때 쓰지말자

  • 매개 변수가 3자에 의해 확장될 수 있는 타입이라면 방어적 복사본을 만들자(clone (X))

    public Period(Date start, end){
        this.start = new Date(start.getTime())
    }

51. 메서드 시그니처를 신중히 설계하자

  • 메서드 이름을 신중히 짓자

  • 편의 메서드를 너무 많이 만들지 말자

  • 매개변수 목록은 짧게 유지하자 - 같은 타입의 매개변수가 연달아 나오면 해롭다

  • 매개변수를 여러개 묶는 도우미 클래스를 만들자

  • 매개변수 타입으로는 클래스보다 인터페이스가 더 낫다

  • Boolean 보다는 원소 2개짜리 열거타입이 낫다

52. 다중정의(오버로딩)는 신중히 사용하자

  • 안전하게 가려면 매개변수 수가 같은 오버로딩은 만들지말자

53. 가변인수는 신중히 사용하자

  • varargs는 0개이상의 인수를 받음
  • 가변인수 메서드는 호출될때마다 배열을 새로 하나 할당하고 초기화함
    • 성능에 문제가 발생할 수 있음

54. null이 아닌 빈 컬렉션이나 배열을 반환하자

  • 배열의 경우 길이가 0인 배열을 반환하자

55. Optional 반환은 신중히 하자

  • Optional로 절대 null을 반환하지 말자
  • 컬렉션, 스트림, 배열 같은 컨테이너 타입은 Optional로 감싸면 안된다
  • 결과가 없을 수 있고 클라이언트가 이상황을 특별하게 처리해야 한다면 Optional를 반환한다
    • Optional도 객체기 때문에 객체안에 메서드를 호출하는 성능이 추가된다
  • OptinalInt/Long/Double 이 있으니 기본타입을 담은 옵셔널을 반환하지말자

56. 공개된 API요소는 문서화 주석을 작성하자

  • @implSpec 은 해당 메서드와 하위 클래스 사이의 계약을 말한다(상속)
  • 열거타입을 문서화 할때는 상수에도 주석을 달아야한다
  • 스레드 안전 수준은 반드시 API설명에 포함해야 한다
반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기