C# 为日期时间范围对象层次结构建模
代码重构新手,我有一个简单的对象如下C# 为日期时间范围对象层次结构建模,c#,refactoring,solid-principles,C#,Refactoring,Solid Principles,代码重构新手,我有一个简单的对象如下 public class TimeRange { public Guid Id { get; set; } public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } } public class ActTimeRange : TimeRange { } p
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
{
}
我在想,如果我应该通过减少两个子类来缩小这个类的层次关系,并用父类上的布尔属性替换它们,即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作为属性或字段,因为您最终可能会使用DoSomethingtrue、false等方法调用,这些都不是很清楚。最好是DoSomethingTimeRangeStatus.Actual,somethingTimeRangeStatus.Red
性能不应与任何方法有关。使用OOP和层次结构时,您不需要使用诸如IsPlanned之类的bool,因为类型PlannedTimeRange表明它是计划的。这两门课是什么?他们需要从时间范围继承吗?如果不考虑继承性,那么需要拥有所有这些类的所有属性是什么?请你把密码或草图写在问题里好吗?这些课程是什么?目标是什么?@OlivierRogier-他在问是否应该放弃两个子类,只使用父类,但使用一个IsPlanned属性。这本质上是他的问题。