它是用行动代表为内联函数的好的做法呢?(Is it a good practice to use A

2019-10-17 16:03发布

我经常有一些片的一个重复的代码。

通常情况下,我把它们放在一个功能,但有时我讨厌这样做是因为:

  • 它需要太多的参数
  • 该代码通常是非常具体的,以整体的一小部分。 所以,我终于有那些只在一个地方使用两个或三个功能。

所以,来模拟从C#缺少内嵌代码,我用行动代表:

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委托执行上下文可以使用局部变量。

我似乎对我好,但我从来没有看见无处行动代表使用这种方式。 这就是为什么我想知道,如果这种做法可建议,或者如果强权导致的问题我不知道。

Answer 1:

只要它不会太混乱,没有什么不妥。



Answer 2:

这是完全有效的一个,如果它使代码更容易阅读和维护时才调用函数。



文章来源: Is it a good practice to use Action delegates as Inline functions?