Después de descubrir las expresiones lambda, y su uso como funciones anónimas, he encontrado a mí mismo escribiendo un montón de acontecimientos más triviales como éstas:mejores prácticas de la utilización de expresiones lambda para controladores de eventos
txtLogin.GotFocus += (o, e) =>
{
txtLogin.Text = string.Empty;
txtLogin.ForeColor = SystemColors.ControlText;
};
txtLogin.LostFocus += (o, e) =>
{
txtLogin.Text = "Login...";
txtLogin.ForeColor = SystemColors.InactiveCaptionText;
};
tengo también alejado de los controladores de eventos que acaba de llamar a otras funciones, reemplazándolos con pequeñas lambdas, que hacen lo mismo:
backgroundWorker.DoWork += (o, e) => DatabaseLookup.Open(e.Argument as string);
que he encontrado algunas preguntas similares abordar performance concerns y señalando que can't remove them, pero no tienen encontrado cualquier abordar la simple pregunta de ¿es esta una buena idea?
¿El uso de lambdas se considera de buena forma, o los programadores tienen más experiencia en esto? ¿Oculta los manejadores de eventos en lugares difíciles de encontrar o hace que el código sea un servicio al reducir el número de manejadores de eventos triviales?
Restringirse a un único punto de salida es una receta para los desastres de legibilidad, IMO. Si conozco el resultado de un método después de una línea (p.porque es un caso especial), entonces no hay razón para que el lector siga el resto del método para llegar al punto de salida. –
Estoy de acuerdo, siempre me gustaría una salida anticipada. Pero sé que algunas personas se oponen a esto. –
Mi filosofía es que a menudo es deseable evitar que las funciones salgan entre la primera declaración que tiene efectos secundarios y la última declaración, excepto que devolver un valor desde un bloque 'try' puede ser más limpio que establecer una variable dentro del bloquear y devolverlo desde afuera. – supercat