예제 12-10 패턴을 사용하지 않고 둘레 길이 계산 ▶ ShapePerimeterBeforePatterns.cs
static double Perimeter(Shape shape)
{
if (shape == null)
throw new ArgumentNullException(nameof(shape));
Rectangle rect = shape as Rectangle;
if (rect != null)
return 2 * (rect.Height + rect.Width);
Circle circle = shape as Circle;
if (circle != null)
return 2 * PI * circle.Radius;
Triangle triangle = shape as Triangle;
if (triangle != null)
return triangle.SideA + triangle.SideB + triangle.SideC;
throw new ArgumentException(
$"Shape type {shape.GetType()} perimeter unknown", nameof(shape));
}
Note ≡
메서드 내부에 중괄호가 없어서 코드를 읽기가 불편할 수 있다. 일반적으로 모든 루프와 if 문 등에 중괄호를 사용하는 편이지만, 패턴의 예를 적용할 것이기 때문에 간결함을 위해 중괄호를 생략했다.