<aside> 💁♂️ 이 장에서는 설계의 청사진이 되는 모델링에 대해 설명합니다.
</aside>
모델 : 동작 원리와 구조를 간단하게 설명하기 위해, 사물의 특징과 관계를 그림으로 나타낸 것
모델링
: 모델을 만드는 활동
User
클래스는 사양 변경이 굉장히 잦아서, 여러 가지 문제를 일으키기 쉬운 클래스입니다.
class User {
int id;
String name;
String email;
String passwordDigest;
}
이후 상품 배송지 지정을 위한 주소와 전화번호, 구매자 프로필을 나타내는 자기소개와 URL 등 다양한 사양이 추가되었습니다.
얼마 지나지 않아 다른 업체도 상품을 등록할 수 있도록 사양 변경이 이루어졌습니다.
법인 사용자를 등록할 때도 User
클래스를 사용하기로 하여 등록번호를 User
클래스에 추가하였습니다.
class User {
int id;
String name;
String email;
String passwordDigest;
String address;
String phoneNumber;
String bio
String url;
int discountPoint;
String themeMode;
LocalDate birthday;
String corporationNumber;
}
하지만 얼마 지나지 않아 버그가 발생하기 시작했습니다.
법인등록번호인 User.corporationNumber
가 null
이라서 발생한 문제입니다.
이 뿐만 아니라 여러가지 버그 발생 가능성이 있으며, 이러한 문제의 발생 원인은 모델링을 제대로 하지 않았기 때문입니다.
모델은 시스템의 구조를 설명하기 위해서 사용합니다.
따라서 모델링을 이해하려면 시스템이 무엇인지 알아야 합니다.