내 코드가 그렇게 이상한가요? 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 자료형의 매개 변수
- 플래그 매개 변수를 받는 메서드는 어떤 일을 하는지 예측하기 힘들다 즉, 내부 로직 확인하는 번거로움 발생, 가독성/개발 생산성 저하
- 매서드 분리하기
'개발서적 스터디 > 내 코드가 그렇게 이상한가요?' 카테고리의 다른 글
내 코드가 그렇게 이상한가요? 10장 이름 설계: 구조를 파악할 수 있는 이름 (0) | 2025.03.04 |
---|---|
내 코드가 그렇게 이상한가요? 9장 설계의 건전성을 해치는 여러 악마 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 8장 강한 결합: 복잡하게 얽혀서 풀 수 없는 구조 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 7장 컬렉션: 중첩을 제거하는 구조화 테크닉 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 5장 응집도: 흩어져 있는 것들 (0) | 2025.03.04 |