a menudo me encuentro usando lambdas como una especie de "funciones" locales para hacer la vida más fácil con las operaciones repetitivos como los que:¿Cuándo es demasiado "acción lambda"?
Func<string, string> GetText = (resource) => this.resourceManager.GetString(resource);
Func<float, object, string> FormatF1 = (f, o) => String.Format("{0:F1} {1}", f, o);
Func<float, object, string> FormatF2 = (f, o) => String.Format("{0:F2} {1}", f, o);
lugar de escribir el String.Format-cosa una y otra vez, con mucho gusto puede volar con FormatF2, por ejemplo y ahorrarme tiempo y cuando necesito cambiar algo sobre el formato, solo un lugar para hacer ediciones. Especialmente cuando necesito la funcionalidad en la función dada exclusivamente, soy muy reacio a convertirlos en una función real. Mientras que el lambdas anteriormente eran relativamente pequeña ... a veces tengo más grandes como (se supone lo siguiente para agregar datos a una tabla para la salida de impresión):
Action<string, string, string> AddSurfaceData = (resource, col, unit) => {
renderTable.Cells[tableRowIndex, 0].Text = "\t" + this.GetText(resource);
renderTable.Cells[tableRowIndex, 1].Text = FormatF2(paraHydReader.GetFloat(paraHydReader.GetOrdinal(col)), "");
renderTable.Cells[tableRowIndex, 1].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Right;
renderTable.Cells[tableRowIndex, 2].Text = " " + this.GetText(unit);
renderTable.Cells[tableRowIndex, 2].Style.TextAlignHorz = C1.C1Preview.AlignHorzEnum.Left;
++tableRowIndex;
};
Una vez más, necesito esto a menudo y todos los beneficios de la arriba aplicar, también. Sin embargo, como pueden ver, esta es bastante larga para una expresión lambda ... la pregunta es: ¿cuándo trazas la línea? ¿Mi última lambda es demasiado? ¿Qué otras formas (aparte de usar funciones reales o intentar rellenar los datos en contenedores y recorrerlos) existen para evitar escribir el mismo código una y otra vez?
Gracias de antemano
Cristiano
Si se trata de un '' string.format' complejo que se usa muchas veces en la misma función, tiene mucho sentido usarlo. La pregunta es realmente cuando la función se vuelve tan complicada que es mejor sacarla como un método privado separado en su clase. – awe