Мне нравится концепция System.Tuple в том смысле, что она позволяет мне возвращать несколько параметров в одном вызове функции без создания экземпляра нового класса, однако это игнорирует любые хорошие методы программирования, такие как Microsoft Patterns & Practices, SOLID Principles и т. Д.
Я просто пытаюсь оценить, насколько свободно я должен использовать эту функцию или я должен использовать ее только в крайних случаях, когда это необходимо.
.net
patterns-and-practices
Кайл Баллард
источник
источник
Ответы:
Проблема с использованием
Tuple
заключается в том, что параметры универсального типа не передают значение.Для удобства чтения вы можете рассмотреть возможность использования пользовательского класса или даже анонимного типа с именованными членами.
источник
T1
, иT2
т.д. Не скажу , что они означают.GetTopTwoPercentages()
который возвращаетTuple<decimal, decimal>
. Это может быть достаточно ясно.Одним из наиболее важных качеств кода является удобочитаемость. Так что спросите себя:
когда я (то есть в ком-то еще, кроме вас) смотрю на сигнатуру метода, знаю ли я, что означают соответствующие компоненты
Tuple
?Например, если возвращаемая пара чисел представляет собой набор полярных координат, это ясно?
Это понятно
Это вводит в заблуждение (потому что можно принять декартовы координаты):
И это лишено смысла:
Таким образом, в общем, вы будете оценивать ясность для каждого конкретного случая и рефакторинг в случае необходимости. Если вы представляете данные того же типа, что и
Tuple
во многих разных местах, то создание класса, безусловно, хорошая идея.источник