Das Konzept von System.Tuple gefällt mir insofern, als es mir ermöglicht, mehrere Parameter in einem einzigen Funktionsaufruf zurückzugeben, ohne eine neue Klasse zu instanziieren. Dies widerspricht jedoch guten Programmierpraktiken wie Microsoft Patterns & Practices, SOLID Principles usw.
Ich versuche nur zu beurteilen, wie großzügig ich diese Funktion verwenden sollte oder ob ich sie nur in Randfallszenarien verwenden sollte, wenn dies erforderlich ist.
.net
patterns-and-practices
Kyle Ballard
quelle
quelle
Antworten:
Das Problem bei der Verwendung
Tuple
ist, dass die generischen Typparameter keine Bedeutung vermitteln.Zur besseren Lesbarkeit können Sie eine benutzerdefinierte Klasse oder sogar einen anonymen Typ mit benannten Mitgliedern verwenden.
quelle
T1
,T2
usw. Was Sie nicht sagen , was sie bedeuten.GetTopTwoPercentages()
aTuple<decimal, decimal>
. Das könnte klar genug sein.Eine der wichtigsten Codequalitäten ist die Lesbarkeit. Fragen Sie sich also:
Wenn ich (dh jemand anders als Sie) die Methodensignatur betrachte, weiß ich, welche Bedeutung die jeweiligen Komponenten der
Tuple
haben?Wenn es sich bei dem zurückgegebenen Float-Paar beispielsweise um einen Satz von Polarkoordinaten handelt, ist dies klar?
Das ist klar:
Dies ist irreführend (weil man kartesische Koordinaten annehmen würde):
Und das ist sinnlos:
Im Allgemeinen haben Sie also die Möglichkeit, die Klarheit auf Einzelfallbasis zu bewerten und gegebenenfalls zu überarbeiten. Wenn Sie die gleichen Daten wie
Tuple
an vielen anderen Orten darstellen, ist das Erstellen einer Klasse auf jeden Fall eine gute Idee.quelle