Một vài trong số đối tượng tên miền của tôi chứa phạm vi ngày như một cặp bắt đầu và ngày kết thúc các thuộc tính:Tôi có nên tạo đối tượng DateRange không?
public class Period {
public DateTime EffectiveDate { get; set; }
public DateTime ThroughDate { get; set; }
}
public class Timeline {
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
Và tôi thấy mình với rất nhiều về điều này:
abstract public int Foo(DateTime startDate, DateTime endDate);
abstract public decimal Bar(DateTime startDate, DateTime endDate);
abstract public ICollection<C5.Rec<DateTime, DateTime>> FooBar(DateTime startDate, DateTime endDate);
Người cuối cùng làm tôi tự hỏi ... Tôi có nên triển khai lớp DateRange không? Tôi không biết một trong BCL.
Theo kinh nghiệm của tôi, việc phân cấp đối tượng thường làm phức tạp hơn mọi thứ. Các đối tượng này được gửi đến các báo cáo RDLC được hiển thị bởi điều khiển ReportViewer, nhưng đó là thứ cấp. Tôi sẽ uốn cong khung nhìn sang mô hình chứ không phải ngược lại. Chúng tôi không gắn liền với tên thuộc tính, tuy nhiên, và sẽ sẵn sàng thỏa hiệp với cái gì đó như: xác nhận
public class DateRange {
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
Period p = new Period();
DateTime t = p.EffectiveDateRange.StartDate;
Một lợi ích của một lớp datarange sẽ được tập trung trong những ngày kết thúc đến sau ngày bắt đầu, và nó sẽ đơn giản hóa chữ ký của phương thức của tôi:
abstract public int Foo(DateRange dateRange);
abstract public decimal Bar(DateRange dateRange);
abstract public ICollection<DateRange> FooBar(DateRange dateRange);
Tôi không chắc rằng lớp DateRange sẽ không khiến tôi gặp rắc rối hơn giá trị của nó. Ý kiến?
Câu hỏi phụ: Tôi có bỏ lỡ một lớp tuple có mục đích chung chung trong BCL ở đâu đó không? Tôi biết có một số người rất cụ thể nổi xung quanh trong không gian tên khác nhau. Ô nhiễm chữ ký tên miền công cộng của tôi với các loại C5 cảm thấy rất, rất bẩn.
Tôi chắc chắn nghĩ rằng lớp DateRange có thể giúp ích. Tôi bắt đầu viết nền tảng cho một thời gian trở lại: http://www.adamjamesnaylor.com/2012/11/04/C-DateRange-Class.aspx –
@AdamNaylor: Các liên kết của bạn dường như ... – testing