Nếu bạn có thể cung cấp cho lớp đủ chức năng hữu ích để chứng minh sự phức tạp thêm vào của việc không phải là một chuỗi, thì hãy làm điều đó. Đối với các định danh như ISBN và ISIN, tôi nghi ngờ đây không phải là trường hợp.
Để một lớp định danh trở nên hữu ích, tôi hy vọng nó sẽ trông giống như thế này:
class ISIN {
fromCUSIP()
fromRawISINString()
toString(ISIN::FormatType)
getExchange()
getCountryCode()
getLastFourDigits()
getWhateverCode()
...
}
Nếu thay vào đó, nó trông giống như thế này:
class ISIN {
getString()
setString()
}
Sau đó, tôi sẽ bỏ lớp hoàn toàn, sử dụng các chuỗi thông thường ở mọi nơi và đảm bảo rằng tôi luôn sử dụng "isin" trong tất cả các tên biến có liên quan.
Lưu ý rằng trong một số ngôn ngữ, việc thêm một loại mới hầu như không có "độ phức tạp thêm" trong các chương trình thông thường, trong trường hợp đó, bạn được khuyến khích tạo loại mới ngay cả khi nó không có chức năng nào cả. Nhưng đây không phải là trường hợp của hầu hết các ngôn ngữ OOP truyền thống như C ++.