Уже давно заметил, что нередко применяю метод рефакторинга, который назвал бы "Excract piece of code as parameter". Продемонстрирую на простом примере.
До рефакторинга:
private static void Main()
{
Method1();
}
private static void Method1()
{
int c1 = 1;
long c2 = 2;
string c3 = "" + c1 + c2;
}
После:
private static void Main()
{
Method1((c1, c2) => "" + c1 + c2);
}
private static void Method1(Func<int, long, string> func)
{
int c1 = 1;
long c2 = 2;
string c3 = func(c1, c2);
}
Я уже дозрел, чтобы написать об этом в форуме разработчиков ReSharper-а. Но встретил мнение, что “… типа не фиг таким увлекаться …”. Что думаете по этому поводу?
В дополнение к описанному методу рефакотринга, еще хочется Convert Delegate to Interface.