요약
•
메서드 이름을 신중히 짓자.
•
편의 메서드를 너무 많이 만들지 말고, 확신이 서지 않으면 만들지 말자.
•
매개변수 목록은 짧게 유지하자.
•
매개변수 타입으로는 클래스보다 인터페이스가 더 낫다.
•
boolean보다 원소 2개짜리 열거 타입이 낫다.
메서드 이름을 신중히 짓자.
•
이해하기 쉽고 같은 패키지에 속한 다른 이름들과 일관되게 이름을 짓자.
•
너무 긴 이름을 피하고, 애매하다면 자바 라이브러리 API 가이드를 참조하라.
편의 메서드를 너무 많이 만들지 말고, 확신이 서지 않으면 만들지 말자.
•
메서드가 너무 많은 클래스는 익히고, 사용하고, 문서화하고, 테스트하고, 유지보수하기 어렵다.
•
아주 자주 쓰일 경우에만 별도의 약칭 메서드를 두고, 자신의 각 기능을 완벽히 수행하는 메서드로 제공해야한다.
매개변수 목록은 짧게 유지하자.
•
매개변수 목옥은 4개가 넘어가면 매개변수를 전부 기억하기 어렵기 때문에 API 문서를 끼고 개발하고 싶지 않다면, 4개 이하로 두는게 좋다.
•
같은 타입의 변수가 연달아 나오는 경우, 매개변수의 순서를 기억하기 힘들뿐더러 매개변수의 순서가 틀리더라도 컴파일되고 실행되지만 의도와 다르게 동작한다.
•
매개변수 목록을 줄이는 세 가지 방법
1.
여러 메서드로 쪼개어, 각각 쪼개진 메서드에 원래 매개변수 목록의 부분으로 나누어 사용한다. 메서드 수가 너무 많아질 수 있지만, 직교성(서로 영향을 주는 성분이 전혀 없음)을 높이는 방향으로 작성하면 오히려 메서드 수를 줄이는 효과를 낼 수 있다.
2.
매개변수 여러 개를 묶어주는 도우미 클래스를 만들어 사용한다. 매개변수 목록 중 관련이 있는 몇 가지들을 묶어 독립된 개념의 클래스로 처리한다면, 매개변수가 줄어 API가 깔끔해지고 클래스 내부 구현도 깔끔해진다.
3.
위의 두 기법을 혼합하여, 빌더 패턴을 메서드 호출에 사용한다. 매개변수가 많고 그 중 일부 매개변수를 생략해도 괜찮을 때 주로 사용된다. 빌더 패턴의 각 단계에서 매개변수 하나 혹은 서로 연관된 몇 개를 묶어서 값을 설정한다.
매개변수 타입으로는 클래스보다 인터페이스가 더 낫다.
•
메서드에 HashMap으로 매개변수를 받는 것보다, Map으로 받게 되면 TreeMap, ConcurrentHashMap, HashMap 등 많은 Map 구현체들을 인수로 받을 수 있다.
•
인터페이스 대신 클래스를 사용하면 클라이언트에 특정 구현체만 사용하도록 제한하는 것이며, 만약 입력 데이터가 다르더라면 특정 구현체의 객체로 옮겨 담는 비용을 치러야한다.
boolean보다 원소 2개짜리 열거 타입이 낫다.
•
메서드 이름상 boolean을 받아야 명확해지는 경우를 제외하고, 확장 가능성을 고려해 열거형을 사용하는 것이 더 바람직하다.
•
화씨 온도와 섭씨 온도를 표현한다면, 해당 값을 boolean으로 받기보다는 FAHRENHEIT과 CELSIUS를 가지는 열거형으로 표현하는 것이 좋다. 이런 경우라면 이후 켈빈 온도가 추가되어도 또다른 정적 메서드를 추가할 필요 없이 열거형 상수 하나만 추가해주면 된다.