Является ли хорошей практикой использование делегатов Action в качестве функций Inline?

У меня часто есть фрагмент кода, который повторяется.

Обычно я помещаю их в функцию, но иногда мне это не нравится, потому что:

  • для этого требуется слишком много параметров
  • код обычно очень специфичен для небольшой части целого. Поэтому я, наконец, имею две или три функции, которые используются только в одном месте.

Итак, чтобы имитировать код Inline, отсутствующий в С#, я использую делегаты Action:

public void Display(DateTime from, DateTime to)
{
    var start = from.ToOADate();
    var end = to.ToOADate();

    [...]

    // This Action delegate helps me not to repeat the code.
    var removePoints = new Action<Series>(serie =>
    {
        var pointsToRemove = serie.Points.Where(pt => pt.XValue < start || pt.XValue > end).ToArray();

        foreach (var pt in pointsToRemove)
            serie.Points.Remove(pt);
    });

    removePoints(FlameTemperatureSerie);
    removePoints(BoshGasFlowRateSerie);
    removePoints(PercCOSerie);
    removePoints(PercH2Serie);

    [...]
}

Это очень полезно, особенно потому, что контекст выполнения делегата Action может использовать локальные переменные.

Мне кажется хорошо, но я никогда не видел нигде делегатов Action, которые использовали этот путь. Вот почему я хотел бы знать, можно ли рекомендовать эту практику или если это может вызвать проблемы, о которых я не знаю.

Ответ 1

Пока это не слишком запутывает, в этом нет ничего плохого.

Ответ 2

Совершенно допустимо иметь функцию, которая вызывается только один раз, если она упрощает чтение и обслуживание кода.