Kurze Frage zu Anordnung von Variablen einer Rectangle-Klasse
-
Hallo,
habe
rect4
Klasse, die vier Variablen enthält:left
,right
,bottom
,top
.Also insgesamt gäbe es 24 Möglichkeiten diese Variablen anzuordnen, also auch zum Beispiel im ctor.
Ist
left
,bottom
,right
,top
die besser Anordnung, bzw. ist es so üblich und alles andere verwirrend? Also RECT von Windows SDK vertauschttop
undbottom
.
-
@titan99_
Alexandrescu empfielt, die am häufigsten benutzten Elemente nach vorne zu stellen. Ob das hier entscheidend ist sei mal dahingestellt
Das kannst du nach Gefühl entscheiden, denke ich, ich würde mich mit links, oben, rechts und unten ganz gut fühlen.
Ist das für irgendwas relevant?
-
@DocShoe sagte in Kurze Frage zu Anordnung von Variablen einer Rectangle-Klasse:
Ist das für irgendwas relevant?
Also es ist in einem Koordinatensystem, wo die x-Achse nach rechts zunimmt und die y-Achse nach oben zunimmt, d. h. eher zuerst bottom und dann top.
Edit: Habe die Permutationen mit
std::next_permutation
ausgeben lassen:left right bottom top left right top bottom left bottom right top left bottom top right left top right bottom left top bottom right right left bottom top right left top bottom right bottom left top right bottom top left right top left bottom right top bottom left bottom left right top bottom left top right bottom right left top bottom right top left bottom top left right bottom top right left top left right bottom top left bottom right top right left bottom top right bottom left top bottom left right top bottom right left
Ich denke ich werde zu left bottom right top wechseln. Das ergibt dann zwei 2-Komponenten-Vektoren, intuitiv left bottom und right top des Rechtecks.
-
@titan99_ sagte in Kurze Frage zu Anordnung von Variablen einer Rectangle-Klasse:
Also RECT von Windows SDK vertauscht top und bottom.
weil in der WinAPI zwei
POINT
s einRECT
sind:typedef long LONG; typedef struct tagPOINT { LONG x; LONG y; } POINT; typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT;
und man so
duck-typingtype-punning machen kann.
-
Left, Top, Right, Bottom ist üblich. Grund: Left, Top ist in "x, y" Reihenfolge und Right, Bottom ebenso. D.h. das Memory Layout ist identisch zu
struct { Point topLeft; Point bottomRight; };
Was in Screen-Koordinaten total Sinn macht.
Bzw. die Reihenfolge ist halt "min X, min Y, max X, max Y". Und genau diese würde ich dir auch empfehlen.
Wenn Y so wie bei Screen Koordinaten nach unten wächst, dann ergibt sich daraus Left, Top, Right, Bottom. Und wenn Y wie in der Mathe üblich nach oben wächst, dann ergibt sich Left, Bottom, Right, Top.
-
@Swordfish sagte in [Kurze Frage zu Anordnung von Variablen einer Rectangle-Klasse]
und man so duck-typing machen kann.
Quack-Quack!
Ich glaube du meinst Type-Punning.
(Wobei man das natürlich als eine Art "memory layout duck typing" ansehen könnte. If it's memory layout looks like a duck, it's a duck. Oder so. Sagt man so aber glaube ich nicht.)
-
@hustbaer sagte in Kurze Frage zu Anordnung von Variablen einer Rectangle-Klasse:
Ich glaube du meinst Type-Punning.
glaube ich auch. quaak.