假设我们有一个巨大的数值笛卡尔坐标列表(5; 3)(1; -9)等。为了表示oop中的一个点,我创建了一个struct/object(c#):验证对象/结构没有失败
public struct Point
{
public int X, Y { get; }
public Point(int x, int y)
{
// Check if x,y falls within certain boundaries (ex. -1000, 1000)
}
}
这可能是错误的我如何使用结构。我猜你通常不会使用构造函数,但这不是重点。
假设我想添加一个1000点的列表,并且不能保证这些坐标位于边界内。简单地说,如果这个观点是无效的,就转到下一个观点而不失败,并告知用户。至于对象,我认为Point本身应该负责实例化和验证,但我不确定在这个特定情况下如何处理它。调用者预先检查x,y将是最简单的方法,但它不适用,因为调用者必须处理应驻留在Point中的逻辑。
验证和处理不正确的坐标而不失败和违反SRP的最合适方法是什么?
[System.Drawing.Point(https://msdn.microsoft.com/en-us/ library/system.drawing.point(v = vs.110).aspx),不需要重新发明轮子。 – TheLethalCoder
@TheLethalCoder'System.Drawing.Point'是一个可变结构。啊!它应该被绞死干燥并尽可能深埋;)。就我个人而言,我避免使用'Point',除非我与API交互的API迫使我使用。 – InBetween
@InBetween只是将它作为替代选项发布,而不是重新将其重新写入。但是你的观点是我评论它的原因,而没有把它写成答案 – TheLethalCoder