이펙티브 자바, 쉽게 정리하기 - item 51. 메서드 시그니처를 신중히 설계하라
메서드 이름은 신중히 짓자
- 메서드 표준 명명규칙을 따르자. (item. 68)
- 최대한 커뮤니티에서 널리 받아들여지는 이름을 사용하자.
편의 메서드를 너무 많이 만들진 말자
- 클래스에 메서드가 너무 많으면 다른 개발자가 알기도 힘들뿐더러 문서화 등 유지보수도 힘들다.
- 확신이 서지 않으면 만들지 말자.
매개변수 목록은 짧게 유지하자
- 일반적으로 4개 이하가 좋다.
- 같은 타입의 매개변수가 연속으로 나오면 특히 해롭다.
- 동작이 의도와 다르게 변질되기 쉽다.
JS 에서는 3개 이상인 경우 매개변수 객체 등을 이용하는 것이 깔끔했다.
자바에서는 이걸 헬퍼 클래스라고 한다.
매개변수가 너무 길 때 1: 메서드를 쪼개자
- 메서드를 여러 메서드로 쪼개자.
- 메서드의 직교성이 뛰어나다면, 각각의 작은 메서드로 하나의 큰 메서드를 만들 수 있다.
- 이를테면, 리스트에서 지정된 범위 내 원소를 찾는다면 부분 리스트를 구하는 메서드와 리스트 내 원소를 찾는 메서드 2개로 구성할 수 있다.
- 메서드의 직교성이 뛰어나다면, 각각의 작은 메서드로 하나의 큰 메서드를 만들 수 있다.
직교성이란, 수학에서 직각을 이루며 교차한다는 뜻으로 서로 영향을 주는 성분이 전혀 없는 것을 말한다.
그렇다고 무작정 잘게 쪼개진 말자. 상황에 따라 다른 해법을 가져가는 것이 유익하다.
매개변수가 너무 길 때 2: 도우미 클래스를 만들자
- 도우미 클래스의 다양한 필드들을 이용하고, 해당 클래스를 파라미터로 받자.
JS 에서 객체를 파라미터로 받는 것과 비슷하다.
public class Email {
private final String recipient;
private final String subject;
private final String message;
private final boolean isHighPriority;
private final boolean isHtmlFormat;
public Email(String recipient, String subject, String message, boolean isHighPriority, boolean isHtmlFormat) {
this.recipient = recipient;
this.subject = subject;
this.message = message;
this.isHighPriority = isHighPriority;
this.isHtmlFormat = isHtmlFormat;
}
// Getters for all the parameters
// ...
}
public class EmailSender {
public void sendEmail(Email email) {
// Logic to send the email using the provided parameters
// ...
}
}
매개변수가 너무 길 때 3: 빌더 패턴을 이용하자
- 빌더 패턴과 도우미 클래스를 함께 이용할 수 있다.
도우미 클래스를 이용할 때는 될 수 있으면 클래스 자체보다는 인터페이스를 받자. 이를테면
HashMap
대신Map
을 받으면 추후에 다른Map
타입도 전부 적용 가능하다.
boolean
을 쓰기보다는 원소 2개짜리 열거 타입을 사용하자
- 섭씨, 화씨 등 온도를 구분할 때도
true
면, 섭씨 아니면 화씨 등으로 구분하지 말고,public enum TemperatureScale { FAHRENHEIT, CELSIUS }
와 같이 구분하자.- 코드의 가독성도 좋아지고, 다른 온도 기준이 생겼을 때 확장하기도 좋다.
- 내부적으로
double
값을 받아 온도를 변환해주는 메서드도 구성해놓을 수 있다.
반응형
'Java > 이펙티브 자바' 카테고리의 다른 글
이펙티브 자바, 쉽게 정리하기 - item 53. 가변 인수는 신중히 사용하라 (0) | 2023.06.09 |
---|---|
이펙티브 자바, 쉽게 정리하기 - item 52. 다중정의는 신중히 사용하라 (0) | 2023.06.09 |
이펙티브 자바, 쉽게 정리하기 - item 50. 적시에 방어적 복사본을 만들라 (0) | 2023.06.07 |
이펙티브 자바, 쉽게 정리하기 - item 49. 매개변수가 유효한지 검사하라 (0) | 2023.06.02 |
이펙티브 자바, 쉽게 정리하기 - item 48. 스트림 병렬화는 주의해서 적용하라 (0) | 2023.05.31 |