불 매개변수로 메서드 분할

A Kind Dev·2023년 2월 17일
0

자바 코딩의 기술

목록 보기
7/7
post-thumbnail

자바 객체 지향 디자인의 원리

아름답고(객체 지향적이고) 편리한(강력한) 코드
단순히 올바르게 기능만 하는 코드를 넘어 보기 좋고 사용하기 편리한 코드를 작성하는 법
=> 메서드 분리


잘못된 코드

void log(String message, boolean classified) throws IOExcpetion {
	if (calssified) {
    	writeMessage(message, CAPTAIN_LOG);
    } else {
    	writeMessage(message, CREW_LOG);
    }
}

일반적으로 메서드는 하나의 작업에만 특화되어야 한다. 그러나 위 코드는 하나의 메서드가 두 가지 작업을 수행한다. 불 메서드 매개변수는 메서드가 적어도 두 가지 작업을 수행함을 뜻한다.
이럴 경우 호출하는 쪽에서는 불 매개변수가 실제로 어떤 역할을 하는지 알기 어려워 일반적으로 코드를 이해하기 어려워진다.
또한 서로 다른 기능이 하나의 메서드에서 처리되다 보니(기장, 승무원) 한 기능을 수정할 경우 다른 기능에도 영향을 미칠 위험이 있다.


올바른 코드

void writeToCaptainLog(String message) throws IOExcpetion {
	writeMessage(message, CAPTAIN_LOG);
}

void writeToCrewLog(String message) throws IOExcpetion {
	writeMessage(message, CREW_LOG);
}

입력 매개변수에 불이 쓰인 메서드라면 메서드를 여러 개로 분리함으로써 코드를 향상할 수 있다.

1. boolean인 메서드 매개변수 제거
2. 매개변수로 구분하던 각 제어 흐름 경로마다 새 메서드를 추가
3. 새 메서드에 표현적이면서도 의미 있는 이름 짓기

메서드명을 보면 메시지가 어떤 로그에 속하는지 분명히 알 수 있고 호출하는 코드만 보아도 메서드가 무엇을 하는지 알 수 있다.


출처 : [자바 코딩의 기술], 사이먼 하러 외 3인, 길벗 출판사

profile
친절한 개발자

0개의 댓글