Ich habe kürzlich über die Verwendung von Ganzzahlen ohne Vorzeichen in C # nachgedacht (und ich denke, ein ähnliches Argument kann für andere "Hochsprachen" angeführt werden).
Wenn ich eine Ganzzahl benötige, bin ich normalerweise nicht mit dem Dilemma der Größe einer Ganzzahl konfrontiert. Ein Beispiel wäre eine Alterseigenschaft einer Personenklasse (aber die Frage ist nicht auf Eigenschaften beschränkt). In diesem Sinne gibt es meines Erachtens nur einen Vorteil der Verwendung einer Ganzzahl ohne Vorzeichen ("uint") gegenüber einer Ganzzahl mit Vorzeichen ("int") - die Lesbarkeit. Wenn ich die Idee zum Ausdruck bringen möchte, dass ein Alter nur positiv sein kann, kann ich dies erreichen, indem ich den Alterstyp auf uint setze.
Andererseits können Berechnungen mit Ganzzahlen ohne Vorzeichen zu Fehlern aller Art führen, und es ist schwierig, Operationen wie das Subtrahieren von zwei Zeitaltern durchzuführen. (Ich habe gelesen, dass dies einer der Gründe ist, warum Java vorzeichenlose Ganzzahlen weggelassen hat.)
Im Falle von C # kann ich auch denken, dass eine Schutzklausel für den Setter eine Lösung wäre, die das Beste aus zwei Welten bietet, aber dies wäre nicht anwendbar, wenn ich zum Beispiel ein Alter an eine Methode weitergeben würde. Eine Problemumgehung wäre, eine Klasse mit dem Namen Age zu definieren und das Eigenschaftsalter als einziges Element anzugeben. Dieses Muster würde jedoch dazu führen, dass ich viele Klassen erstelle, was Verwirrung stiftet (andere Entwickler würden nicht wissen, wann ein Objekt nur ein Wrapper ist und wenn es etwas mehr sofisticaded ist).
Was sind einige allgemeine Best Practices in Bezug auf dieses Problem? Wie soll ich mit einem solchen Szenario umgehen?