ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 패턴 매칭 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 절을 사용하면 된다.

     

     

Designed by Tistory.