12. 메서드(함수) - 좋은 클래스에는 좋은 메서드가 있다.
내용
반드시 현재 클래스의 인스턴스 변수 사용하기
다른 클래스의 인스턴스 변수를 변경ㅏ는 메서드는 좋지 않음.
왜?
응집력이 낮은 구조를 의미하기 때문
불변을 활용해서 예상할 수 있는 메서드 만들기
가변 인스턴스는 의도지 않는 영향을 줄 수 있음.
즉 유지보수가 어려워짐
묻지 말고 명령하라
다른 클래스를 확인하고 조작하는 메서드 구조 = 응집력 낮은 구조
getter/setter 는 다른 클래스를 확인하고 조작하는 메서드 구조가 되기 쉽다.
커맨드/쿼리 분리
int gainANdGetPoint() {
point += 10;
return point
}
상태변경 + 추출 동시에 하지 말자
CQS, Command-Query Separation
메서드는 커맨드 또는 쿼리 중에 하나만 해야한다.
커맨드?
상태를 변경하는 것
쿼리?
상태를 리턴하는 것
모디파이어
커맨드와 쿼리를 동시에 하는 것
어쩔 수 없는 경우도 있지만.. 가능한 피하자
매개변수
매개변수 설계 시 주의할 점
불변 매개변수로 만들자
플래그 매개변수 사용하지 않기
null 전달하지 않기
출력 매개변수 사용하지 않기
매개변수는 최대한 적게 사용하기
리턴 값
리턴 값 설계 시 주의할 점
자료형을 사용해서 리턴 값 의도하기
기본 자료형 사용하지 말고, 독자적인 자료형을 사용해서 의도를 명확하게 나타내는 것이 좋다.
왜?
실수로 값이 섞이는 경우를 방지할 수 있음.
null 리턴하지 않기
오류는 리턴 값으로 리턴하지 말고, 예외 발생 시키기
어떤 값이 여러 의미를 나타내면(중의적), 읽는 사람에게 혼란을 준다
정리
CQS, Command-Query Seperation
매개변수 설계, 리턴값 설계
단순한 부분이지만 의도를 작성자의 의도를 드러내야..
다른 사람이 읽어도 오해하지 않도록 할 수 있음.
참고
https://product.kyobobook.co.kr/detail/S000202521361
Last updated
Was this helpful?