-
패턴 매칭 vs if-else 절컴공지식/프로그래밍언어론 2024. 8. 31. 22:57
패턴 매칭(Pattern Matching)과 if-else 절은 모두 조건에 따라 다른 코드를 실행하는 방법이지만, 각각의 장단점과 사용 사례가 다르다.
패턴 매칭은 단순한 조건 비교뿐만 아니라, 데이터의 구조를 분석하고 그 구조에 따라 분기할 수 있다. 예를 들어, 객체의 타입, 내부 필드, 리스트의 패턴 등을 기준으로 분기할 수 있다.
한 번의 match 구문 안에서 여러 경우를 처리할 수 있다.
스칼라는 패턴 매칭에서 모든 경우를 처리하지 않으면 컴파일러가 경고를 주기 때문에, 오류를 미리 방지할 수 있어 디버깅에 유리하다.
그에 비해 if-else절은 단순히 조건이 true인지 false인지에 따라 코드의 실행 흐름을 결정한다.
간단한 조건을 처리할 때는 if-else가 직관적이고 이해하기 쉽다. 조건이 복잡하지 않다면, if-else가 적합할 수 있다.
다만, 여러 개의 else if를 사용하면 코드가 길어지고 가독성이 떨어질 수 있다.
다음은 패턴매칭의 사용 예다
def describeShape(shape: Shape): String = shape match {
case Triangle(a, b, c) => s"Triangle with sides $a, $b, $c"
case Rectangle(h, w) => s"Rectangle with height $h and width $w"
case Square(side) => s"Square with side $side"
case _ => "Unknown shape"
}다음은 if-else절의 사용 예다
def describeShapeSimple(shape: Shape): String = {
if (shape.isInstanceOf[Triangle])
"This is a triangle"
else if (shape.isInstanceOf[Rectangle])
"This is a rectangle"
else if (shape.isInstanceOf[Square])
"This is a square"
else
"Unknown shape"
}가독성이 완전 다르지 않나?
뭐 아무튼..상황에 따라 적절하게 나눠서 쓰면 된다.
복잡한 분기면 패턴 매칭, 단순한 논리 비교면 if-else 절을 사용하면 된다.
'컴공지식 > 프로그래밍언어론' 카테고리의 다른 글
테스트 주도 개발(TDD, Test-Driven Development) (0) 2024.08.31 어떻게 함수를 설계할까 (0) 2024.08.31 스칼라의 패턴 매칭 (0) 2024.08.31 스칼라에서 타입을 정의하는 방법 (0) 2024.08.31 Scalar의 assert (0) 2024.08.31