Angenommen, wir haben eine riesige Liste von numerischen kartesischen Koordinaten (5; 3) (1; -9) usw. Um einen Punkt in oop darzustellen, habe ich eine Struktur/Objekt (C#) erstellt:Validieren Sie Objekt/Struktur ohne Fehler
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)
}
}
Es könnte falsch sein, wie ich struct verwende. Ich nehme an, normalerweise würden Sie keinen Konstruktor verwenden, aber das ist nicht der Punkt.
Angenommen, ich möchte eine Liste von 1000 Punkten hinzufügen, und es gibt keine Garantie, dass diese Koordinaten in Grenzen fallen. Wenn der Punkt nicht gültig ist, gehen Sie einfach zum nächsten ohne Fehler und informieren Sie den Benutzer darüber. Was das Objekt betrifft, würde ich denken, dass Point für die Instanziierung und Validierung selbst verantwortlich sein sollte, aber ich bin mir nicht sicher, wie ich in diesem speziellen Fall damit umgehen soll. Das Vornehmen von x, y im Voraus durch den Aufrufer wäre der einfachste Ansatz, aber es fühlt sich nicht richtig an, da der Aufrufer mit der Logik umgehen müsste, die sich in Point befinden sollte.
Was wäre der am besten geeignete Ansatz, um falsche Koordinaten zu validieren und zu behandeln, ohne SRP zu versagen und zu verletzen?
[System.Drawing.Point] (https://msdn.microsoft.com/en-us/ library/system.drawing.point (v = vs.110) .aspx), muss das Rad nicht neu erfunden werden. – TheLethalCoder
@TheLethalCoder 'System.Drawing.Point' ist eine veränderbare Struktur. Pfui! Es sollte aufgehängt werden, um so tief wie möglich zu trocknen und zu begraben;). Persönlich vermeide ich 'Point', es sei denn, die API, mit der ich interagiere, zwingt mich dazu. – InBetween
@InBetween Habe es einfach als alternative Option gepostet, anstatt es noch einmal neu zu schreiben. Aber Ihr Punkt ist, warum ich es kommentiert und nicht als Antwort geschrieben – TheLethalCoder