Me gusta el concepto de System.Tuple porque me permite devolver múltiples parámetros en una sola llamada de función sin instanciar una nueva clase, sin embargo, esto desafía cualquier buena práctica de programación como Microsoft Patterns & Practices, SOLID Principles, etc.
Solo estoy tratando de evaluar cuán liberalmente debería usar esta función o si solo debería usarla en escenarios de caso límite cuando sea necesario.
.net
patterns-and-practices
Kyle Ballard
fuente
fuente
Respuestas:
El problema con el uso
Tuple
es que los parámetros de tipo genérico no transmiten significado.Para facilitar la lectura, puede considerar usar una clase personalizada o incluso un tipo anónimo con miembros nombrados.
fuente
T1
,T2
etc. No te dice lo que significan.GetTopTwoPercentages()
que devuelve aTuple<decimal, decimal>
. Eso podría ser lo suficientemente claro.Una de las cualidades de código más importantes es la legibilidad. Entonces pregúntese:
cuando yo (es decir, en cualquier otra persona que no sea usted) mire la firma del método, ¿sé qué significan los componentes respectivos de la
Tuple
?Por ejemplo, si el par de flotadores que está devolviendo es un conjunto de coordenadas polares, ¿está claro?
Esto está claro:
Esto es engañoso (porque uno asumiría coordenadas cartesianas):
Y esto carece de significado:
En términos generales, tendrá que evaluar la claridad según el caso y refactorizar si es necesario. Si representa el mismo tipo de datos que
Tuple
en muchos lugares diferentes, crear una clase es definitivamente una buena idea.fuente