Я рефакторинг некоторого кода, который использует методы, которые имеют параметры.Я не особо против параметров out, но для того, что я делаю, мне редко требуется более одного значения.
У меня полдюжины методов с одинаковой сигнатурой "void GetThings (T вещь,out x, out y) "
, поэтому я хотел получить простые способы сказать" gotY = NewMethod (T вещь) "
Я придумал это.Вопросы для следования:
[TestFixture]
public class TestsBase
{
[Test]
public void Test1()
{
Del.ImaExtMethod(2);
Del2.ImanotherExtMethod(2);
}
public static MyDel Del = TestTest;
public static MyDel2<int> Del2 = TestTest;
public static void TestTest(int input, out int output)
{
output = input * 2;
}
}
public delegate void MyDel(int input, out int output);
public delegate void MyDel2<T>(T input, out T output);
public static class TestExts
{
public static int ImaExtMethod(this MyDel del, int input)
{
int result;
del(input, out result);
return result;
}
public static T ImanotherExtMethod<T>(this MyDel2<T> del, T input)
{
T result;
del(input, out result);
return result;
}
}
Теперь я немного разорван.С одной стороны, это довольно элегантное решение, с другой стороны, оно не совсем интуитивно понятно, если вы раньше не видели этот стиль.
Итак, прежде чем я снова разорву это и сделаю что-нибудь еще, что ты думаешь?Как бы вы справились с вышеуказанным рефакторингом?Третий вариант - вернуть класс полезной нагрузки со всеми параметрами настройки параметров.Это, вероятно, яснее, чем то, что я сделал выше, но чувствует себя менее ... забавно? ...
Да, я тот же человек, который продолжает говорить "Ясность бьет краткость": /