더북(TheBook)

3.3.11 올바른 타입 사용하기

앞에서 Int, Double, String과 같은 표준 타입을 사용해 가격이나 세율과 같은 비즈니스 요소를 표현했다. 프로그래밍에서 이런 식의 접근이 흔한 일이지만, 이런 식으로 너무 흔히 쓰는 타입을 사용하면 문제가 생길 수 있다. 앞에서 말한 것처럼 이름보다는 타입을 신뢰해야 한다. 어떤 Double 값을 ‘price’라고 부른다고 해서 그 값이 가격이 되는 것은 아니다. 이름은 단지 여러분의 의도를 보여줄 뿐이다. 다른 Double 값을 ‘taxRate’라고 부르면 또 다른 의도를 보여주겠지만, 컴파일러는 그 의도를 강화시켜 주지 못한다.

프로그램을 더 안전하게 만들려면 강력한 타입을 사용해 컴파일러가 프로그램을 검사하게 만들어야 한다. 타입을 활용하면 taxRateprice를 더하는 등의 실수로 프로그램이 더럽혀지는 일을 막을 수 있다. 강력한 타입을 활용하지 않으면 혹시 실수로 taxRateprice를 더한다고 해도 컴파일러가 볼 때는 DoubleDouble을 더하기 때문에 아무 문제도 없어 보인다. 하지만 이런 식의 계산은 완전히 잘못된 것이다.

 

표준 타입을 사용할 때 생기는 문제 피하기

간단한 문제를 살펴보고 그 문제를 표준 타입으로 풀 경우 어떤 문제가 생기는지 살펴보자. 여러분이 처리할 상품에 이름, 가격, 무게라는 정보가 있고, 상품 판매를 표현하는 송장을 만든다고 생각해 보자. 이 송장에는 상품명, 수량, 전체 가격, 전체 무게가 들어가야 한다. 이 상품을 Product라는 클래스를 사용해 다음과 같이 표현할 수 있다.

data class Product(val name: String, val price: Double, val weight: Double)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.