API 메서드 설계에 중요한 네 가지 방법을 설명한다.
1. 메서드 이름을 신중히 짓자
2. 편의 메서드를 너무 많이 만들지 말자
3. 매개변수 목록은 짧게 유지하자.
4. 매개변수 타입으로는 클래스보다 인터페이스가 더 낫다.
아래의 예제는 매개변수의 수는 많지 않지만 추가로 4개, 5개가 String타입으로 생성된다고 생각해보자. 실수로 순서를 바꿔 입력해도 원하는 값은 아니지만 전혀 문제가 발생하지 않는다.(문제가 발생하지 않는 점이 문제다)
public String tempMethod(String userId, String userPassword, String userName, String userNumber) {
//do something
}
java.util.List 인터페이스를 예로, 리스트에서 지정된 범위의 부분리스트에서 특정 인덱스를 찾아야하는데 이때 필요한 매개변수는 부분리스트의 시작과 끝, 찾을 원소 3개의 매개변수를 필요로한다. 하지만 List 인터페이스에서는 부분리스트를 반환하면 subList메서드와 특정 인덱스를 찾는 indexOf 메서드를 제공한다. 메서드의 수는 증가했지만 매개변수의 수는 감소했다.
//부분리스트 반환 메서드
List<E> subList(int fromIndex, int toIndex);
//특정 인덱스 호출 메서드
int indexOf(Object o);
//임시 메서드
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
}
[참고자료]
이펙티브 자바