为日期时间范围 object 层次结构建模
Model a date time range object hierarchy
代码重构新手,我有一个简单的object如下
public class TimeRange
{
public Guid Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
public class ActTimeRange : TimeRange
{
}
public class PlannedTimeRange : TimeRange
{
}
我在想,如果我应该通过减少两个 children class 来缩小这个 class 层次结构关系,而不是用一个布尔值 属性 替换它们parent class(即 IsPlanned),哪个性能更好?
因为您似乎没有向 ActTimeRange
和 PlannedTimeRange
添加任何其他属性,所以做这种模型可能更好:
public class TimeRange
{
public Guid Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public TimeRangeStatus Status { get; set; } = TimeRangeStatus.None;
}
public enum TimeRangeStatus
{
None,
Actual,
Planned
}
我会避免将 bool
作为 属性 或字段,因为您最终可能会得到像 DoSomething(true, false)
这样的方法调用 - 这不是很清楚。最好有DoSomething(TimeRangeStatus.Actual, SomeOtherFlag.Red)
.
任何方法都不应考虑性能。
代码重构新手,我有一个简单的object如下
public class TimeRange
{
public Guid Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
public class ActTimeRange : TimeRange
{
}
public class PlannedTimeRange : TimeRange
{
}
我在想,如果我应该通过减少两个 children class 来缩小这个 class 层次结构关系,而不是用一个布尔值 属性 替换它们parent class(即 IsPlanned),哪个性能更好?
因为您似乎没有向 ActTimeRange
和 PlannedTimeRange
添加任何其他属性,所以做这种模型可能更好:
public class TimeRange
{
public Guid Id { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public TimeRangeStatus Status { get; set; } = TimeRangeStatus.None;
}
public enum TimeRangeStatus
{
None,
Actual,
Planned
}
我会避免将 bool
作为 属性 或字段,因为您最终可能会得到像 DoSomething(true, false)
这样的方法调用 - 这不是很清楚。最好有DoSomething(TimeRangeStatus.Actual, SomeOtherFlag.Red)
.
任何方法都不应考虑性能。