Мое мнение, что параметры ref
и out
ухудшают читабельность кода. В большинстве случаев их можно заменить с помощью дженериков и типов, допускающих значение NULL.
Я бы хотел, чтобы resharper предупреждал, когда кто-то пытается определить функцию с параметром ref или out. Однако все, что мне удалось найти, — это способ рефакторинга методов, объявленных для использования параметров out. Кажется, не существует каких-либо существующих проверок или способов написать собственный шаблон, ориентированный на параметры ref и out.
Вот обычное использование параметра out:
int i;
if(!int.TryParse(str, out i))
{
i = -1;
}
Сравните это с этим:
var i = str.TryParse<int>() ?? -1;
TryParse — это просто метод расширения строки. У меня есть пользовательское правило решарпера, которое подчеркивает любые вызовы ValueType.TryParse(). Обратите внимание, что теперь можно анализировать строку как часть выражения linq.
T? TryParse<T>(this string str)
{
//magic
}
$type$
наvoid
. Очень жаль, что документация по шаблонам настолько скудна, что я не смог найти в Интернете ничего, кроме тривиальных примеров. 15.04.2013