Tôi đang làm việc trên một ứng dụng ASP.NET MVC và tôi đã có thói quen đưa những thứ có vẻ như hữu ích và tiện lợi vào các lớp mô hình / thực thể của tôi.
Ví dụ:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string FullName
{
get { return FirstName + " " + LastName; }
}
public string FormattedPhoneNumber
{
get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); }
}
}
Tôi đang tự hỏi mọi người nghĩ về FullName
và FormattedPhoneNumber
getters.
Chúng giúp dễ dàng tạo các định dạng dữ liệu được tiêu chuẩn hóa trong ứng dụng và dường như chúng lưu rất nhiều mã lặp lại, nhưng chắc chắn có thể lập luận rằng định dạng dữ liệu là thứ cần được xử lý trong ánh xạ từ mô hình sang mô hình xem.
Trên thực tế, ban đầu tôi đã áp dụng các định dạng dữ liệu này trong lớp dịch vụ của mình, nơi tôi thực hiện ánh xạ của mình, nhưng nó trở thành gánh nặng khi phải liên tục phải viết các trình định dạng sau đó áp dụng chúng ở nhiều nơi khác nhau. Ví dụ: tôi sử dụng "Tên đầy đủ" trong hầu hết các chế độ xem và phải nhập một cái gì đó giống như model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
mọi nơi có vẻ thanh lịch hơn nhiều so với chỉ gõ model.FullName = entity.FullName
(hoặc, nếu bạn sử dụng một cái gì đó như AutoMapper, có khả năng không gõ gì cả).
Vì vậy, nơi bạn vẽ đường khi định dạng dữ liệu. Là "ổn" để thực hiện định dạng dữ liệu trong mô hình của bạn hay đó là "mùi mẫu"?
Lưu ý: Tôi chắc chắn không có bất kỳ html nào trong mô hình của mình. Tôi sử dụng trợ giúp html cho việc đó. Tôi nghiêm túc nói về định dạng hoặc kết hợp dữ liệu (và đặc biệt là dữ liệu thường được sử dụng).
PhoneNumber
có lẽ thuộc về lớp của chính nó (mà bây giờ tôi đã thực hiện). Nhưng FullName
đó thực sự là một trong những động lực thúc đẩy tôi viết câu hỏi. Nhưng tôi quan tâm đến việc tìm hiểu xem, nói chung, có ý nghĩa gì khi đặt định dạng / kết hợp dữ liệu, v.v. trong mô hình cho những thứ sẽ áp dụng trên toàn ứng dụng hay không. Từ các câu trả lời dưới đây, có vẻ như đây không phải là một mô hình chống đối, nhưng quyết định nên được đưa ra một cách cẩn thận.