В целом я согласен с другими ответчиками: слепая замена определений функций на Action
/ Func
- это не очень хорошая вещь.Action
и Func
не являются будущим .NET.Это инструмент, который очень полезен, но, как и любой инструмент, может использоваться неправильно.
Так что, если вы склонны писать такой код
class SomeClass {
Action<...> a1 = (..) => {};
Func<...> f1 = (..) => {};
Action<...> a2 = (..) => {};
...
}
Это, конечно,хорошая вещь.
Если вы делаете это много:
void SomeMethod()
{
Action<..> a = (..) => {};
...
a();
}
, тогда это действительно хороший способ инкапсуляции небольшого вспомогательного метода без загрязнения класса.
Чтобы аргументировать ваш конкретный случай: если hideControl
используется только в очень конкретном случае, предпочтителен частный вспомогательный метод.Если это требуется для большого числа FormViews
, тогда метод расширения имеет больше смысла.Методы расширения также являются инструментом, которым можно злоупотреблять, поскольку это может привести к загрязнению общедоступного интерфейса для класса.Хотя вы можете ограничить это с помощью использования пространств имен.
Я обычно придерживаюсь этого правила: если вам требуется вспомогательный метод, который полезен во многих местах и ситуациях и может быть сделан достаточно общим, я создаю расширениеметод.Если это вспомогательный метод, который требуется для определенного класса, но в нескольких местах (методах) в этом классе, тогда я создаю закрытый метод.Если это помощник, который мне нужен только в одном конкретном месте, тогда я делаю его Action / Func внутри этого метода.