kmg28801 / effective-java

2 stars 0 forks source link

8장. 메서드 #7

Open ky8778 opened 1 month ago

ky8778 commented 1 month ago

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

메서드나 생성자의 모든 매개변수의 유효성을 검사하고, 적절하지 않다면 IllegalArgumentException 등 예외를 던져라.

장점

잘못된 입력을 미리 걸러내어 버그를 줄이고, 코드의 가독성과 안정성을 높인다.

  1. 버그 예방 : 잘못된 매개변수가 전달되는 것을 방지함으로써 발생할 수 있는 예기치 않은 오류와 버그를 줄일 수 있다.
  2. 문제 조기 발견 : 매개변수의 유효성을 초기에 검사하여, 오류가 발생하는 즉시 원인을 쉽게 파악할 수 있다.
  3. 코드 안정성 : 유효하지 않은 값이 내부 로직에 영향을 미치지 않도록 하여 전체 코드의 안정성을 높인다.
  4. 문서화 : 유효성 검사 코드는 메서드가 어떤 값을 기대하는지 명확히 나타내어, 메서드 사용자가 올바른 값을 전달할 수 있게 한다.

방법

유의할 점


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

메서드가 외부로부터 받은 가변 객체를 내부에서 사용하거나 반환할 때는 방어적 복사본을 만들자.

방어적 복사(defensive copying) 메서드가 변경 가능한 객체를 받을 때 원본 객체의 상태를 보호하기 위해 복사본을 사용하는 기법. → 원본 객체가 외부에서 변경되는 것을 방지

장점

방법

주로 객체를 반환할 때와 매개변수로 받을 때 수행

  • 객체를 반환할 때 방어적 복사본 만들기 : 변경 가능한 객체를 반환할 때는 원본 객체 대신 복사본을 반환
  • 매개변수로 받은 객체 방어적 복사 : 매개변수로 받은 객체가 변경 가능할 경우, 내부에서 사용할 때는 방어적 복사를 통해 원본 객체를 보호

유의할 점


Item 51: 메서드 시그니처를 신중히 설계하라

메서드 시그니처를 신중히 설계하면 메서드의 사용성을 높이고, 코드의 가독성, 유지보수성, 재사용성을 향상시킬 수 있다. 이를 위해 메서드 이름, 매개변수 목록, 반환 타입 등을 고려하여 직관적이고 명확하게 설계하는 것이 중요하다.

메서드 시그니처 메서드의 이름, 매개변수 목록, 반환 타입 등을 포함한 메서드의 선언부

장점

잘 설계된 메서드 시그니처는 메서드의 사용성을 높이고 유지보수성을 향상시킨다.

방법


Item 52: 오버로딩을 주의하라

오버로딩보다는 메서드 이름을 다르게 하여 혼란을 방지하고, 가독성과 유지보수성을 높이자.

오버로딩 같은 이름의 메서드를 여러 개 정의하되, 매개변수 목록이 다르게 작성하는 기법

오버로딩을 잘못 사용하면 혼란을 초래하므로 주의해서 사용하자.

고려할 점


Item 53: 가변인수는 신중히 사용하라

가변인수(varargs)를 사용하면 메서드가 임의의 개수의 인수를 받을 수 있어 유연성이 높아진다. 그러나 잘못 사용하면 성능 저하와 예기치 않은 동작을 초래할 수 있으므로 주의해서 사용하자.

장점


Item 54: null이 아닌, 빈 컬렉션이나 배열을 반환하라

메서드가 컬렉션이나 배열을 반환할 때 null 대신 빈 컬렉션이나 배열을 반환하는 것이 좋다. 이를 통해 NullPointerException을 방지하고, 코드의 가독성과 간결성을 높일 수 있다. 자바 표준 라이브러리에서 제공하는 메서드나 미리 정의된 상수를 사용하여 빈 컬렉션이나 배열을 반환하는 방법을 고려하자.

장점


Item 55: 옵셔널 반환은 신중히 하라

메서드가 값을 반환할 때 null 대신 Optional를 사용하면 null 관련 오류를 줄일 수 있다. 그러나 모든 경우에 Optional을 사용하는 것이 적합하지 않으며, 성능과 사용성을 고려하여 신중히 사용해야 한다.

Optional 장점

주의할 점


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

ky8778 commented 1 month ago

아이템 49: 매개변수가 유효한지 검사하라

아이템 50: 적시에 방어적 복사본을 만들라

아이템 51: 메서드 시그니처를 신중히 설계하라

Item 52: 오버로딩을 주의하라

Item 53: 가변인수는 신중히 사용하라

Item 54: null이 아닌, 빈 컬렉션이나 배열을 반환하라

Item 55: 옵셔널 반환은 신중히 하라

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