[Refactoring] 메서드 호출 단순화
메서드 호출 단순화
메서드명 변경
- 메서드명을 봐도 기능을 알 수 없을 땐 메서드명을 직관적인 이름으로 바꾼다.
매개변수 추가
- 메서드가 자신을 호출한 부분의 정보를 더 많이 알아야 할 땐 객체에 그 정보를 전달할 수 있는 매개변수를 추가한다.
매개변수 제거
- 메서드가 어떤 매개변수를 더 이상 사용하지 않을 땐 그 매개변수를 삭제한다.
상태 변경 메서드와 값 반환 메세드를 분리
- 값 반환 기능과 객체 상태 변경 기능이 한 메서드에 들어 있을 땐 질의 메서드와 변경 메서드를 분리한다.
메서드를 매개변수로 전환
- 여러 메서드가 기능이 비슷하고 안에 든 값만 다를 땐 서로 다른 값을 하나의 매개변수로 전달받는 하나의 메서드를 만든다.
매개변수를 메서드로 전환
- 매개변수로 전달된 값에 따라 메서드가 다른 코드를 실행할 땐 그 매개변수로 전달될 수 있는 모든 값에 대응하는 메서드를 각각 만든다.
매개변수를 메서드로 전환
은메서드를 매개변수로 전환
의 작업을 거꾸로 하면 된다.
객체를 통째로 전달
- 객체에서 가져온 여러 값을 메서드 호출에서 매개변수로 전달할 땐 그 객체를 통체로 전달한다.
매개변수 세트를 메서드로 전환
- 객체가 A 메서드를 호출해서 그 결과를 B 메서드에 매개변수로 전달하는데, 결과를 매개변수로 받는 B 메서드도 직접 A 메서드를 호출할 수 있을 땐 매개변수를 없애고 A 메서드를 B 메서드가 호출하게 한다.
- 메서드가 매개변수로 전달받는 값을 다른 방법으로 가져올 수 있다면, 그 방법을 택해야 한다.
매개변수 세트를 객체로 전환
- 여러 개의 매개변수가 항상 붙어 다닐 땐 그 매개변수를 객체로 바꾼다.
쓰기 메서드 제거
- 생성할 때 지정한 필드 값이 절대로 변경되지 말아야 할 땐 그 필드를 설정하는 모든 쓰기 메서드(Set)를 제거한다.
메서드 은폐
- 메서드가 다른 클래스에서 사용되지 않을 땐 그 메서드의 반환 타입을 private로 만든다.
생성자를 팩토리 메서드로 전환
- 객체를 생성할 때 단순한 생성만 수행하게 해야 할 땐 생성자를 팩토리 메서드로 교체한다.
하향 타입 변환을 캡슐화
- 메서드가 반환하는 객체를 호출 부분에서 하향 타입 변환해야 할 땐 하향 타입 변환 기능을 메서드 안으로 옮긴다.
에러 부호를 예외 통지로 전환
- 메서드가 에러를 나타내는 특수한 부호를 반환할 땐 그 부호 반환 코드를 예외 통지 코드로 바꾼다.
예외 처리를 테스트로 교체
- 호출 부분에 사전 검사 코드(조건문으로 해당 에러 제거 코드)를 넣으면 될 상황인데 예외 통지를 사용했을 땐 호출 부분이 사전 검사를 실시하게 수정한다.