[Java] API 메서드를 설계하는 네 가지 주의점

lkis71·2023년 3월 19일
0

자바

목록 보기
2/5
post-thumbnail

API 메서드 설계에 중요한 네 가지 방법을 설명한다.
1. 메서드 이름을 신중히 짓자
2. 편의 메서드를 너무 많이 만들지 말자
3. 매개변수 목록은 짧게 유지하자.
4. 매개변수 타입으로는 클래스보다 인터페이스가 더 낫다.

1. 메서드 이름을 신중히 짓자

  • 항상 표준 명명 규칙을 따른다.
  • 따르기 어렵다면 자바 라이브러리 API 가이드를 참조한다.
  • 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용한다.

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

  • 클래스나 인터페이스는 반드시 자신의 각 기능을 완벽히 수행하는 메서드만을 제공해야 한다.
  • 메서드가 너무 많은 클래스나 인터페이스는 문서화하고 테스트하고 유지보수하기 까다롭다.

3. 매개변수 목록은 짧게 유지하자

  • 매개변수 목록은 4개 이하를 선호한다.

아래의 예제는 매개변수의 수는 많지 않지만 추가로 4개, 5개가 String타입으로 생성된다고 생각해보자. 실수로 순서를 바꿔 입력해도 원하는 값은 아니지만 전혀 문제가 발생하지 않는다.(문제가 발생하지 않는 점이 문제다)

public String tempMethod(String userId, String userPassword, String userName, String userNumber) {
	//do something
}

🔅 매개변수 목록을 짧게 줄여주는 기술 3가지

1) 여러 메소드로 쪼갠다.

  • 원래 받으려던 매개변수 목록을 분산한다. 메서드가 너무 많아 질 수 있지만, 직교성을 높여 오히려 메서드 수를 줄여주는 효과가 있다.

java.util.List 인터페이스를 예로, 리스트에서 지정된 범위의 부분리스트에서 특정 인덱스를 찾아야하는데 이때 필요한 매개변수는 부분리스트의 시작과 끝, 찾을 원소 3개의 매개변수를 필요로한다. 하지만 List 인터페이스에서는 부분리스트를 반환하면 subList메서드와 특정 인덱스를 찾는 indexOf 메서드를 제공한다. 메서드의 수는 증가했지만 매개변수의 수는 감소했다.

//부분리스트 반환 메서드
List<E> subList(int fromIndex, int toIndex);

//특정 인덱스 호출 메서드
int indexOf(Object o);

2) 매개변수 여러 개를 묶어주는 도우미 클래스를 만든다.

  • 일반적으로 도우미 클래스는 정적 멤버 클래스로 둔다. 독립된 하나의 개념으로 볼 수 있는 매개변수를 도우미 클래스를 생성하여 묶을 수 있다.
//임시 메서드
public String tempMethod(String userId, String userPassword, String userName, String userNumber) {
	//do something
}

//헬퍼 클래스
private static class Helper {
    String userId;
    String userPassword;
    String userName;
    String userNumber;
}

public String tempMethod(Helper helper) {
	//do something
}

3) 빌더패턴을 응용한다.

  • 매개변수가 많을 때, 그중 일부는 생략해도 괜찮을 때 유용하다.

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

  • 매개변수로 적합한 인터페이스가 있다면 그 인터페이스를 직접 사용하자.
  • 메서드에 HashMap을 넘길 일은 없다. Map을 대신 넘기면 HashMap뿐만 아니라 TreeMap 등 어떤 구현체도 인수로 건낼 수 있다.
  • 인터페이스 대신 클래스를 사용하면 특정 구현체만 사용하도록 제한하는 꼴이된다.

[참고자료]
이펙티브 자바

profile
백엔드 개발자

0개의 댓글