귀찮지만 만들어보자

이펙티브 자바 - 메서드(3) 본문

이펙티브 자바

이펙티브 자바 - 메서드(3)

타우렌주술사 2019. 1. 27. 02:23

메서드 시그니처를 신중히 설계하라


- 메서드 이름을 신중히 짓자.
이게 제일 어렵다 우웩

- 편의 메서드를 너무 많이 만들지 말자
이건 유틸성으로 사용하는 메서드를 만들어서 사용하는 경우뿐만 아니라,
외부 라이브러리를 사용하는 경우 또한 마찬가지다. 
자바의 장점이 활용할 수 있는 라이브러리가 많다는 점인데.. 
간혹 이게 장점인지 단점인지 분간이 안갈때가 있다.
분명 같은 역할을 하는 유틸인데 spring에서 만든것도 있고, apache에서 만든것도 있고..
그래서 협업하는 단계에서 골치아플 때가 많다.

- 매개변수 목록은 짧게 유지하자
4개 이하가 좋다고한다.
과하게 긴 매개변수 목록을 짧게 줄이는 방법
1. 메서드를 쪼갠다
- 여러개의 메서드를 조합해서 사용하는 방식이다. 잘못하면 메서드의 개수만 많아질 수 있지만
잘 만들면 직교성을 높여 메서드 수를 줄여주는 효과도 있다. 직교성이 궁금하다면 검색해보자..;
2. 매개변수 여러개를 묶어주는 도우미 클래스를 만든다
- 흔히 사용하는 방법인데 변수 각각이 아닌 하나의 객체에 몰아넣는것이다.
3. 위의 두가지 방법을 혼합한 것으로, 빌더 패턴을 메서드 호출에 응용한다고 보면 된다.

- 매개변수의 타입으로는 클래스보다 인터페이스가 낫다
확장성 측면에서 훨씬 낫다.

void get(ArrayList<String> list);
void get(List<String> list);

전자보다 후자가 낫다는 말이다.

- boolean보다 원소 2개짜리 열거 타입이 낫다
의미를 더 명확하게 할 수 있다.

Theromometer.newInstance(true);
Theromometer.newInstance(TemperatureSacle.CELSIUS);

전자보다 후자가 어떤 의미인지 파악하기 쉽다.