반응형
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.
아이템 51. 메서드 시그니처를 신중히 설계하라
API 설계 요령
1. 메서드 이름을 신중히 짓자.
- 항상 표준 명명 규칙을 따라야한다.
2. 편의 메서드를 너무 많이 만들지 말자.
- 너무 많으면 익히고, 사용하고, 문서화하고, 테스트하고 ,유지보수 하기 어렵다.
- 확신이 서지 않으면 만들지 말자.
3. 매개변수 목록은 짧게 유지하자.
- 4개 이하가 좋다.
- 같은 타입의 매개변수 여러 개가 연달아 나오는 경우가 특히 좋지 않다. → 실수로 순서를 바꿔 입력하는 경우, 그대로 컴파일되고 실행되어 의도와 다른 동작이 일어남
- 과하게 긴 매개변수 목록을 줄이는 방법
- 여러 메서드로 쪼갠다.
- 쪼개진 메서드 각각은 원래 매개변수 목록의 부분집합을 받는다.
- 잘못하면 메서드가 너무 많아질 수 있지만, 직교성을 높여 오히려 메서드 수를 줄여주는 효과도 있다. ex) java.util.List
- 매개변수 여러 개를 묶어주는 도우미 클래스를 생성
- 일반적으로 이런 도우미 클래스는 정적 멤버 크래스로 둔다.
- 잇따른 매개변수 몇 개를 독립된 하나의 개념으로 볼 수 있을 떄 추천하는 기법
- 예를 들어 카드게임을 클래스로 만들 때, 카드의 숫자와 무늬를 뜻하는 두 매개변수를 항상 같은 순서로 전달할 것이다. 따라서, 이 둘을 묶는 도우미 클래스를 만들어 하나의 매개변수로 주고받으면 깔끔하다.
- 위의 두 기법을 혼합한 것으로, 객체 생성에 사용한 빌더 패턴을 메서드 호출에 응용한다고 보면 된다.
- 이 기법은 매개변수가 많을 때, 특히 그중 일부는 생략해도 괜찮을 때 도움이 된다.
- 여러 메서드로 쪼갠다.
4. 매개변수의 타입으로는 클래스보다 인터페이스가 더 낫다.
- 매개변수로 적합한 인터페이스가 있다면 그 인터페이스를 직접 사용하자
- 예를 들어, 메서드에 HashMap을 넘길 일이 전혀 없다면 Map을 사용하자. 그러면 HashMap, TreeMap 등 다른 Map 구현체도 인수로 건넬 수 있다.
5. boolean 보다는 원소 2개짜리 열거 타입이 낫다.
- 메서드 이름상 boolean을 받아야 의미가 더 명확할 때는 예외
- 열거 타입을 사용하면 코드를 읽고 쓰기가 더 쉬워진다.
반응형
'BE > Java' 카테고리의 다른 글
[Effective Java] 아이템 53. 가변인수는 신중히 사용하라 (0) | 2022.11.16 |
---|---|
[Effective Java] 아이템 52. 다중정의는 신중히 사용하라 (0) | 2022.11.15 |
[Effective Java] 아이템 50. 적시에 방어적 복사본을 만들라 (0) | 2022.11.11 |
[Effective Java] 아이템 49. 매개변수가 유효한지 검사하라 (0) | 2022.11.10 |
[Effective Java] 아이템 48. 스트림 병렬화는 주의해서 적용하라 (0) | 2022.11.09 |