내 코드가 그렇게 이상한가요? 6장 조건 분기: 미궁처럼 복잡한 분기 처리를 무너뜨리는 방법

2025. 3. 4. 20:42개발서적 스터디/내 코드가 그렇게 이상한가요?

6.1 조건 분기가 중첩되어 낮아지는 가독성

얼리 리턴으로 중첩 제거하여 가독성 높이기

6.2 Switch 조건문 중복

같은 형태의 switch 문을 여러번 사용하는것은 매우 좋지 않음

  • switch 조건문 중복을 해소하려면 단일 책임 선택의 원칙을 생각해 봐야 함
  • 즉, 조건식이 같은 조건 분기를 여러 번 작성하지 말고 한 번에 작성하자 (클래스 내부에 조건문 생성)
  • 인터페이스로 switch 조건문 중복 해소 하기

6.3 조건 분기 중복과 중첩

인터페이스는 switch 조건문의 중복을 제거할 수 있을 뿐 아니라, 다중 중첩된 복잡한 분기를 제거하는 데 활용 할 수 있음

  • 정책 패턴으로 조건 집약하기
    • 정책 패턴 : 조건을 부품처럼 만들고, 부품으로 만든 조건을 조합해서 사용하는 패턴

6.4 자료형 확인에 조건 분기 사용하지 않기

전략패턴으로 인터페이스 구현

e.g. : 숙박 요금이 일반 객실 요금(7만원), 프리미엄 객실 요금(12만원)

interface HotelRates {
	fun fee(): Money
}

각 일반 객실, 프리미엄 객실에서 fee 를 구현하여 전략 패턴으로 숙박 요금 전환 가능

class RegularRates : HotelRates {
	override fee(): Money {
		return Money(70000)
	}
}

class PremiumRates : HotelRates {
	override fee(): Money {
		return Money(120000)
	}
}

성수기를 맞이하여 요금이 인상될 경우 자료형 기반으로 성수기 요금 분기 발생

또한 이후 특정 기간에 대한 요금 인상시 조건 분기 코드가 계속 중복됨

→ 이는 리스코프 치환 원칙 이라는 소프트 웨어 원칙을 위반함

해결 : 인터페이스에 성수기 요즘을 리턴하는 메서드 정의

6.5 인터페이스 사용 능력이 중급으로 올라가는 첫걸음

인터페이스를 잘 활용하는지가 곧 설계 능력의 전환점

→ 조건 분기를 써야 하는 상황에서 일단 인터페이스 설계를 떠올리자

초보자 중급자 이상

분기 if, switch 사용 인터페이스
분기마다의 처리 로직을 그냥 작성 클래스

6.6 플래그 매개변수

플래그 매개변수 : 메서드 기능을 전환하는 Boolean 자료형의 매개 변수

  • 플래그 매개 변수를 받는 메서드는 어떤 일을 하는지 예측하기 힘들다 즉, 내부 로직 확인하는 번거로움 발생, 가독성/개발 생산성 저하
  • 매서드 분리하기